开发者学堂课程【【名师课堂】Java 高级开发: Class 类对象的三种实例化模式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/372/detail/4624
Class 类对象的三种实例化模式
具体内容
Class 类是描述整个类的概念,也是整个反射的操作源头,在使用 Class 类 的时候需要关注的是这个类的对象,这类的对象产生模式共三种:
·任何的实例对象可以通过 Object 类中的 getClass() 方法取得 Class 类的对象
注意:
在<>中绝大多数人会写上 Date,在反射的世界里,这种泛型使用度是有限的,一般处理这些往往用的是 Object
package cn. mldn. demo;
import java .util .Date;
public class TestDemo {
public static void main(String[ ] args) {
Class cls = new Date(). getClass() ;
另外还有个简单的方法:
叫 getName()
package cn. mldn. demo;
import java. util. Date;
public class TestDemo {
public static void main(String []1args) {
Classcls= new Date (). getClass();
System.out.println(cls. getName());
}
}
“类 .class”:直接根据某一个具体的类来取得 Class 类的实例化对象;
package cn. mldn. demo;
import java. util. Date;
public class TestDemo {
public static void main(String []1args) {
Classcls= Date class; // 不需要实例化Date类对象
System.out.println(cls. getName());
}
}
使用 Class 类提供的方法:
public static ClassforName(String className) throws ClassNotFoundException;
范例:使用 forName() 方法
package cn.mldn.demo;
public class TestDemo {
public static void main(string[ ] args) throws Esception {
Classcls =Class.forName(“java.util.date); //直接使用字符串描述要使用的类
System.out.println(cls.getName());
}
}
除了第一种形式会产生 Date 类的实例化对象之外,其他两种都不会产生 Date 类的实例化对象。
由此得出 Class 对象的一个最直接的好处:
可以直接通过反射实例化对象,在 Class 类里面定义有如下一个方法:
Public T newInstance () throws
InstantiationException,IllegalAccessException
范例:反射实例化对象
package cn.mldn.demo;
public class TestDemo {
public static void main(string[ ] args) throws Esception {
Classcls =Class.forName(“java.util.date); //直接使用字符串描述要使用的类
Object obj = cls.newInstance(); //实例化对象,等价:new java. util. Date()
System .out. println(obj);
}
}
除了关键字 new 外,对于对象的实例化模式有了第二种做法,通过反射进行
总结
取得了 Class 类对象就意味着取得了一个制定类的操作权。