Java的方法反射和成員變量反射有點像,通過getMethod(String name,Class... params)來得到帶參數的public的方法
getDeclaredMethod(String name,Class... param)得到帶參數的方法。方法調用用method.invoke(Object obj,Obj... param),這麼調用相當於obj.method(param)。如果是靜態方法,前一個obj就用null,如果沒有參數,不用寫第二個參數,如果方法是私有的,調用前一定要setAccessable(true) 下面是示例:
static void test() throws Exception{
Method methodChartAt=String.class.getMethod("charAt", int.class);
System.out.println(methodChartAt.invoke("abc", 1));
Method methodTreasre=new Client().getClass().getDeclaredMethod("treasure");//這個類類名叫Client
methodTreasre.setAccessible(true);
System.out.println(methodTreasre.invoke(new Client()));
Method methodValueOf=String.class.getMethod("valueOf", boolean.class);
System.out.println(methodValueOf.invoke(null, false));
}
private String treasure(){
return "this is a secret treasure";
}