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
接下来将介绍 如何通过反射去动态加载类
资源已上传:http://download.csdn.net/detail/jaky0306/9762046