Java反射サンプル

1185 ワード

JAvaでの反射メカニズムは、プロファイルから提供されるクラス名に基づいて、クラスオブジェクトをプログラムに動的にロードし、使用することで、プログラムの拡張性を向上させることができます」eg:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;




public class ReflectSample{
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
		Class c = Class.forName("T");		
		Object o = c.newInstance();
		Method[] mArr = c.getMethods();
		for (Method m:mArr){
			if (m.getName().equals("mm")){
				m.invoke(o);
			}
			
			if (m.getName().equals("bigThan")){
				Class[] paraTypeArr = m.getParameterTypes();
				for (Class cl:paraTypeArr){
					System.out.println(cl.getName());
				}
				Class returnType = m.getReturnType();
				System.out.println(returnType.getName());
			}
		}
	}
}


class T{
	static {
		System.out.println("T loaded!");
	}
		
	public T(){
		System.out.println("T Constructor");
	}
	
	public void mm(){
		System.out.println("mm  Method");
	}
	
	public boolean bigThan(int a, int b){
		if (a<b)
			return false;
		return true;
	}
}