リフレクション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引数に引数の値を記述する。