クラス・メソッド動的実行
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class TestInvoke {
public static void main(String args[]) {
try {
// class 定義
Class cls = Class.forName("test.TargetClass");
// static メソッド生成
Method getStr2 = cls.getMethod("getStr2", new Class[]{String.class});
// instance 生成
Constructor con = cls.getConstructor(new Class[]{String.class});
Object obj = con.newInstance(new Object[]{"xyz"});
// instance メソッド生成
Method getStr1 = cls.getMethod("getStr1", new Class[]{});
System.out.println(" staticメソッド実行:" + getStr2.invoke(cls, new Object[]{"abc"}));
System.out.println("instanceメソッド実行:" + getStr1.invoke(obj, new Object[]{}));
} catch(Exception e) {
e.printStackTrace();
}
}
}
public class TargetClass {
private String str;
// コンストラクタ
public TargetClass(String str) {
this.str = str;
}
// instance メソッド
public String getStr1() {
return this.str;
}
// static メソッド
public static String getStr2(String str) {
return str;
}
}