Java SE笔记: 反射构造Class对象

构造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
    4
    Employee 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
2
3
Class c = Class.forName("Employee");
Object o = c.newInstance(); //调用了Employee的无参数构造方法.
System.out.println(o); //Employee@c17164

注:如果没有无参数构造方法,则会报错!

文章目录
  1. 1. 构造Class对象的三种方式:
    1. 1.1. 第一种方式:
    2. 1.2. 第二种方式:
    3. 1.3. 第三种方式:
    4. 1.4. 创建此 Class 对象所表示的类的一个新实例: