クラス clazz = Class.forName("com.test.zzz.person");
//プライベート メソッドではなく、clazz に対応するクラス内のすべてのメソッドを取得し、親クラスから継承されたすべてのメソッドを取得します。
Method[]methods = clazz.getMethods();
for(Method method:methods){ System.out. print (" "+method.getName()+"()"); } System.out.println("----------------------- -");
//プライベート メソッドを含むすべてのメソッド、すべての宣言されたメソッドを取得し、現在のクラスのメソッドのみを取得しますmethods
= clazz.getDeclaredMethods();
for(Method method:methods){ System.out.print(" "+method.getName ()+"()"); }
// 指定したメソッドを取得するにはパラメータ名とパラメータリストが必要です パラメータがない場合はメソッドを記述する必要はありません Method Method =
clazz.getDeclaredMethod("setName", String.class);
System.out.println (方法);
注: public void setAge(int age) { } メソッドは、
この方法では取得できません。メソッドのパラメーターの型が int 型で、
メソッドがリフレクションに使用される場合、int 型は Integer として記述されます。 public void setAge(Integer age) { }
int.class として記述されたメソッドのパラメータを取得するか、
メソッド = clazz.getDeclaredMethod("setAge", int.class);
System.out.println(メソッド);
// メソッドを実行します。最初のパラメータはメソッドを実行するオブジェクトを示し、残りのパラメータはメソッドの実行時に渡す必要があるパラメータです。 Object obje
= clazz.newInstance();
method.invoke(obje,18 );
//プライベート メソッドの実行では、invoke を呼び出す前に、method.setAccessible(true) を追加する必要があります;
method = clazz.getDeclaredMethod("privateMethod");
System.out.println(method);
System.out.println("- - -------------------------");
System.out.println("プライベート メソッドの実行");
method.setAccessible(true);
メソッド 。呼び出し(オブジェクト);