反射の3つの方法と反射によるオブジェクトの作成


伝統的な方式.
一般的なメソッドは、オブジェクトを作成する最も一般的なメソッドの前提条件です.このクラスが存在することを知っています.このクラスをObject例と呼びます.
Object obj=new Object();

反射によるオブジェクトの作成
方式一:クラス名.class方式による前提条件:コンパイル時にObjectクラス例が存在することを知る必要がある:
Class<?> obj1 = Object.class;

方法2:既知のオブジェクトインスタンス.getClass方式の前提条件:クラスによって作成された既知のオブジェクトが存在し、コンパイル時にObjectクラスインスタンスが存在することを知る必要がある:ここでは通常(従来)の方法でオブジェクトobjが作成されている
Class<?> obj2 = obj.getClass();

方法3:Class.forNameによる方法この方法の特徴:コンパイル時にObjectクラスが存在することを知らないかもしれませんが、クラス名でオブジェクトを作成するのではなく、クラスの存在位置の相対パスでオブジェクト例を作成することができます.
Class<?> obj3 = Class.forName("java.lang.Object");

小結:上記3つの作成で得られたものはすべてClassタイプのオブジェクトであり、バイトコードオブジェクトとも呼ばれる
バイトコードオブジェクトによるインスタンス化オブジェクトの作成
例:obj 3を例に
  • obj 3を用いて無パラメトリック構築方法オブジェクト
  • を取得する.
    Constructor<?> constructor = obj3.getConstructor();
    
  • 構築方法によりオブジェクト
  • を作成する.
    Object o = constructor.newInstance();
    

    小結:このときオブジェクトoは、送信によって作成されたインスタンス化されたオブジェクト以上であり、学習の参照にのみ使用されます.