リフレクションを利用したメソッドの呼び出し例
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引数に引数の値を記述する。