类名.class, class.forName(), getClass()区别

.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对象是唯一的)

你可能感兴趣的:(Class.forName)