社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Class类的对象无法实例化,其构造方法是私有的。
序号 | 方式 |
---|---|
1 | 通过对象的getClass()方法获取Class对象。 |
2 | 通过类名.class 获取Class对象。 |
3 | 通过Class.forname(“全限定类名”)。 |
Class的三种实例化对象的具体使用:
package www.fanfan;
import java.util.Date;
public class TestReflect {
public static void main(String[] args) {
//1. 通过对象.getClass()方法获取Class对象
//通过date对象获取到创建date对象的类的对象
//Class 类下的对象
//java.util.Date->Class 对象,描述Date这个类
Date date = new Date();
Class classd = date.getClass();
System.out.println(classd);
//2. 通过类名.class获取Class对象
Class classd1 = Date.class;
System.out.println(classd1);
//3. 通过Class.forname(“全限定类名”)
//类的名称:全限定名称
//需要捕获异常
try {
Class classd2 = Class.forName("java.util.Date");
System.out.println(classd2);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
}
注意:
Class创建的针对某一种类型的描述的对象 都相等。因为对于同一个类型,虽然其Class对象的获取方法可能不同,但是它们描述的信息都是一样的,因此指向同一块空间。
System.out.println(classd == classd1);//true
//通过Class对象创建实例化对象
try {
Object object = classd.newInstance();
//向下转型,有风险,使用instanceof
if (object instanceof Date){
Date date1 = (Date)object;
System.out.println(date1);
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!