リフレクション2
リフレクションを利用したメソッドの呼び出し例
package harada;
import java.lang.*;
import java.lang.reflect.*;
import java.net.InetAddress;
public class getMethodLab {
public static void main(String[] args) {
Object value = null;
try{
// クラスを取得
Class myClass = Class.forName("java.net.InetAddress");
// メソッドを取得 (引数なし)
Method myMethod = myClass.getMethod("getLocalHost",null);
// メソッドを実行 (引数なし)
value = myMethod.invoke(null,null);
System.out.print("value→" + value);
// メソッドを取得 (引数あり)
myMethod = myClass.getMethod("getByName", new Class[]{String.class });
// メソッドを実行 (引数あり)
value = myMethod.invoke(null,new Object[]{new String("TS01")});
System.out.print("value→" + value);
}catch (ClassNotFoundException e){
System.out.print("ClassNotFoundException");
}catch (NoSuchMethodException e){
System.out.print("NoSuchMethodException");
}catch (IllegalAccessException e){
System.out.print("IllegalAccessException");
}catch (InvocationTargetException e ){
// 呼び出したメソッドが返す例外
System.out.print("InvocationTargetException");
}
}
}
メソッドに引数が必要な場合は getMethodの第2引数に引数の型を記述する。
また、invokeの第2引数に引数の値を記述する。