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

传统方式

普通方法也就是最常见的创建对象的方法
前提条件:知道存在这个类,且这个类叫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就是通过发射创建的实例化对象
以上,仅供学习参考

    原文作者:绿毛水怪啊
    原文地址: https://blog.csdn.net/qq_43148324/article/details/113178318
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞