package com.robert.reflect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InvokerTest
{
public int add(int a, int b)
{
return a + b;
}
public String echo(String str)
{
return "echo " + str;
}
public static void main(String[] args)
{
Class classType = InvokerTest.class;
try {
// Object invokerTest = classType.newInstance(); //构造默认构造器
Object invokerTest = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
Method addMethod = classType.getMethod("add", new Class[]{int.class,int.class});
Object result = addMethod.invoke(invokerTest, new Object[]{100,200});
System.out.println(result.toString());
Method echoMethod = classType.getMethod("echo", new Class[]{String.class});
Object echoResult = echoMethod.invoke(invokerTest, new Object[]{"hello world"});
System.out.println(echoResult.toString());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}