<pre id=\"best-answer-content\" class=\"reply-text mb10\">最基本的:
import java.lang.reflect.Method;
public class Reflect {
public static void main(String[] args) {
call(\"ABC\");
call(\"DEF\");
call(\"XYZ\");//这个会有异常,因为没有这个方法
call(\"ABC\",\"hello\");
call(\"DEF\",\"world\");
call(\"XYZ\",\"error\");//这个会有异常,因为没有这个方法
call(\"ABC\",new Class?[]{int.class},new Object[]{1});
call(\"DEF\",new Class?[]{Integer.class},new Object[]{new Integer(2)});
call(\"DEF\",new Class?[]{X.class},new Object[]{new X()});
call(\"DEF\",new Class?[]{X.class},new Object[]{new Integer(3)});//这个会有异常 argument type mismatch
}
private static void call(String methodName) {
try {
Method m=Reflect.class.getDeclaredMethod(methodName,null);
m.invoke(Reflect.class);
} catch (Exception e) {e.printStackTrace();}
}
private static void call(String methodName,String param) {
try {
Method m=Reflect.class.getDeclaredMethod(methodName,String.class);
m.invoke(Reflect.class,param);
} catch (Exception e) {e.printStackTrace();}
}
private static void call(String methodName,Class? extends Object[] ptypes,Object[] obj) {
try {
Method m=Reflect.class.getDeclaredMethod(methodName,ptypes);
m.invoke(Reflect.class,obj);
} catch (Exception e) {e.printStackTrace();}
}
public static void ABC(){
System.out.println(\"Call ABC.\");
}
public static void ABC(String str){
System.out.println(\"Call ABC with param:\" str);
}
public static void ABC(int i){
System.out.println(\"Call ABC with param:\" i);
}
public static void ABC(Integer i){
System.out.println(\"Call ABC with param:\" i);
}
public static void ABC(X i){
System.out.println(\"Call ABC with param:\" i);
}
public static void DEF(){
System.out.println(\"Call DEF.\");
}
public static void DEF(int i){
System.out.println(\"Call DEF.\" i);
}
public static void DEF(Integer i){
System.out.println(\"Call DEF.\" i);
}
public static void DEF(X i){
System.out.println(\"Call DEF.\" i);
}
public static void DEF(String str){
System.out.println(\"Call DEF with param:\" str);
}
public static class X{
public String toString(){
return \"X\";
}
}
} |