Java反射机制-Class类

Java,是面向对象的
什么是对象,大家立刻就想到类(class)。Integer,String,Double,Void.....都是类的对象。那么,
类又是谁的对象呢??》
类,是java.lang.Class类的实例对象
我们具体点解释
我们创建一个类 Car
class car {}
接着我们创建一个Car的实例对象,大家都知道,直接new Car()即可。
Car car1 = new Car();
car1 是Car的实例对象,那么Car又是谁的实例对象? 是Class
那么Class,它的实例对象该如何表示呢??还能不能new Class() ?
我们打开源码

可以看到,Class它的构造方法是私有的,而且注释说的很明确,Only the java virtual machine..只有java虚拟机能直接创建它。因此,我们不能new 了。

这个Class , 它的实例对象有3种表示方法。
第一种: 直接使用字节码的形式
Class c1 = Car.class;
ps: 可以看出,任何一个类,都有一个静态的class对象,对吧??
第二种: 通过已知的类对象的getClass()方法来实例化
Class c2 = car.getClass();
在说第三种前,回头看下,car 是Car的实例对象,c1,c2又表示Car,在官网里,c1,c2 被说成为
class type, 中文即是 类类型。
第三种: 通过类路径的形式获取(需要捕获异常)
Class c3 = null;
try {
c3 = Class.forName("reflect.initClass.Car");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
这里,c1 c2 c3 是否相等???
System.out.println(c1 == c2);
System.out.println(c2 == c3);
会发现,都是true,也说明, 一个类,只可能有一个类类型
上面我们创建一个类实例对象,是直接new,现在,有了类类型,我们有了第二种方式(newInstance):
Car car2 = (Car) c1.newInstance(); // 完全没问题
以上就是java反射中,Class 类的具体解释,简单····
接下来将介绍 如何通过反射去动态加载类


资源已上传:http://download.csdn.net/detail/jaky0306/9762046



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值