获取class对象的方式:
1.Class.forName("全类名"):将字节码文件加载进内存,返回Class文件对象(在Source源代码阶段的调用)
2.类名.class:通过类名的属性class获取(在Class类对象阶段的调用)
3.对象名.getClass():getClass()方法是Object类中的方法(在Runtime运行阶段的调用)
//1.Class.forName("全类名");
Class aClass = Class.forName("reflect.ReflectEntity2");
System.out.println(aClass);
//2.类名.Class;
Class reflectEntity2Class = ReflectEntity2.class;
System.out.println(reflectEntity2Class);
//3.对象.getClass();
ReflectEntity2 reflectEntity2 = new ReflectEntity2();
Class aClass1 = reflectEntity2.getClass();
System.out.println(aClass1);
//比较三者地址值是否相同
System.out.println(aClass==reflectEntity2Class);//true
System.out.println(aClass==aClass1);//true
System.out.println(reflectEntity2Class==aClass1);//true
输出结果:
结论:
同一个字节码文件(*.class)在一次程序运行的过程中只会被加载一次,不论哪种方式获取的对象都是同一个