构造Class对象的三种方式:
第一种方式:
- 对于系统的类,必须写全名!
该方式会将.Class文件装载到JVM中,会执行静态语句块!
1
Class c1 = Class.forName("Employee"); //c1引用保存内存地址指向堆中的对象,该对象代表的是Employee整个类.
第二种方式:
- java中每个类型都有 class 属性!
该方法不会加载.Class文件,不执行静态语句块!
1
Class c2 = Employee.class;
第三种方式:
java语言中任何一个java对象都有 getClass 方法1
2
3
4Employee e = new Employee();
Class c3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)
System.out.println(c1==c2); //true
System.out.println(c2==c3); //true注:因为Employee这个类在JVM中只有一个,所以c1,c2,c3的内存地址是相同的,指向堆中唯一的一个对象.
创建此 Class 对象所表示的类的一个新实例:
1 | Class c = Class.forName("Employee"); |
注:如果没有无参数构造方法,则会报错!