Javaリフレクションとリフレクションの一般的なメソッドの実装

反射

クラス自体はクラスです
クラスオブジェクトはシステムによってのみ作成できます

リフレクションがどのように達成されるか

デモ
オブジェクトで取得 ユーザーuser = new User(); クラスc1 = user.getClass()
ClassクラスのforName()静的メソッドを介して クラスc2 = Class.forName(“ com.radish.domain.User”);
クラス名別クラス クラスc3 = User.class

コードデモ:

public stati void main(String[] args) {
    
    
	// 方式一:使用对象
	User user = new User();
    Class c1 = user.getClass();

	// 方式二:使用Class的静态方法forName()
	Class c2 = Class.forName("com.radish.User");
	
	// 方式三:使用类的.class
	Class c3 = User.class;
}

リフレクションで一般的に使用される方法

  • インスタンスオブジェクトを作成する
  • フィールド、フィールド属性を取得します
  • メソッド、メソッド属性を取得します
  • コンストラクターなど
メソッド名 特徴
newInstance パラメータのないコンストラクタを使用するのと同じです新しいオブジェクト
getConstructor オブジェクトのコンストラクターオブジェクトを取得します
getMethods / getDeclaredMethods メソッドオブジェクト配列を取得します。Declaredのないメソッドは、このクラスと親クラスのメソッドを取得できますが、publicを使用する必要があります。Declaredのメソッドは、(private、protect、public)を含む、このクラスのすべてのメソッドのみを取得できます。
getMethod / getDeclaredMethod メソッド名を指定して指定されたメソッドを取得します。Declaredは上記と同じ効果があります
getFields / getDeclaredFields クラスのフィールドを取得し、Filed配列を返します。Declaredの機能は上記と同じです。

おすすめ

転載: blog.csdn.net/weixin_44736584/article/details/107800841