反射的三种方式及利用反射创建对象

  • Post author:
  • Post category:其他




传统方式

普通方法也就是最常见的创建对象的方法

前提条件:知道存在这个类,且这个类叫Object

例:

Object obj=new Object();



利用反射创建对象

方式一:通过类名.class方式

前提条件:需要在编译时就知道存在Object类

例:

Class<?> obj1 = Object.class;

方式二:通过已知对象实例.getClass方式

前提条件:存在该类创建的已知对象,且需要在编译时就知道存在Object类

例:此处已通过普通(传统)方式创建了对象obj

Class<?> obj2 = obj.getClass();

方式三:通过Class.forName的方式

该方法特点:编译时可能不知道存在Object类,但仍然可以创建对象,即不是通过类名来创建对象,而是通过类存在位置的相对路径来创建对象

例:

Class<?> obj3 = Class.forName("java.lang.Object");

小结:上述三种创建得到的都是Class类型的对象,又称之为字节码对象



利用字节码对象来创建实例化对象

例:此处以obj3为例

  1. 利用obj3获取无参构造方法对象
Constructor<?> constructor = obj3.getConstructor();
  1. 通过构造方法来创建对象
Object o = constructor.newInstance();

小结:此时对象o就是通过发射创建的实例化对象

以上,仅供学习参考



版权声明:本文为qq_43148324原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。