类名.class, class.forName(), getClass()差别
类名.class, class.forName(), getClass()区别
.getClass()是动态的,其余是静态的。
.class和class.forName()只能返回类内field的默认值,getClass可以返回当前对象中field的最新值
Class.forName() 返回的是一个类,.newInstance() 后才创建一个对象,Class.forName()的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的
class demo.A
class demo.A (这里也可以得到一个类的Class对象是唯一的)
.getClass()是动态的,其余是静态的。
.class和class.forName()只能返回类内field的默认值,getClass可以返回当前对象中field的最新值
Class.forName() 返回的是一个类,.newInstance() 后才创建一个对象,Class.forName()的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的
package demo; public class A { public static void main(String[] args) throws Exception { System.out.println(A.class);//通过类.class获得Class对象 A a = new A(); System.out.println(a.getClass());//通过 实例名.getClass()获得Class对象 System.out.println(Class.forName("demo.A"));//通过Class.forName(全路径)获得Class对象 System.out.println("................................."); System.out.println(a);//使用不同的方式创建对象 System.out.println(A.class.newInstance()); System.out.println(a.getClass().newInstance()); System.out.println(Class.forName("demo.A").newInstance()); } }结果:class demo.A
class demo.A
class demo.A (这里也可以得到一个类的Class对象是唯一的)