Java記錄 -84- Reflection API的使用樣本
Reflection API的基本使用 兩種擷取Class的方式:Class<?> classtype = Class.forName("java.lang.Object");Class<?> classType = InvokeTester.class; 1.擷取某個類的所有方法資訊(運行時)
public class DumpMethods { public static void main(String[] args) throws Exception{ //Reflection API的基本作用 Class<?> classtype = Class.forName("java.lang.Object"); Method[] methods = classtype.getDeclaredMethods(); //擷取指定類下的所有方法,包含私人方法。(運行時所有方法) for(Method method : methods){ System.out.println(method); } }}
2.通過反射調用某類的某個指定方法
public class InvokeTester { public int add(int a, int b){ return a + b; } public String echo(String message){ return "hello "+message; } public static void main(String[] args) throws Exception{ //一般調用方法// InvokeTester test = new InvokeTester();// System.out.println(test.add(3, 4));// System.out.println(test.echo("welcome")); //Reflection調用方法 Class<?> classType = InvokeTester.class; Object invokeTester = classType.newInstance();// System.out.println(invokeTester instanceof InvokeTester); Method addMethod = classType.getMethod("add", new Class[]{int.class, int.class}); Object result = addMethod.invoke(invokeTester, new Object[]{2,3}); System.out.println(result); System.out.println("-------------------------"); Method echoMethod = classType.getMethod("echo", new Class[]{String.class}); Object result2 = echoMethod.invoke(invokeTester, new Object[]{"tom"}); System.out.println(result2); }}