2014-03-03 39 views
0

我知道Java可以使用Reflection.getMethod(...)方法獲得方法對象,但該方法需要方法參數類型,但我不知道確切的參數類型。java可以通過反射獲得methodname方法

byte a = 20; 
System.out.println(a); 

println方法沒有重載方法println(Byte),但println(Int)。 如何獲得通過字節型println方法? 另一個例子

class MyClass 
{ 
} 
class MyClass1 extends MyClass 
{ 
} 
class TestClass 
{ 
    public static void method1(MyClass c) 
    { 
     ... ... 
    } 
} 

TestClass.method1(new MyClass1())是correct.but我可以通過參數類型MyClass1獲取method1嗎?

Class.getMethods將得到所有方法在課堂上,太多我可以得到所有重載方法同名

回答

2

java.lang.Class(見JavaDoc)提供的調查方法有兩種:?

Method getMethod(String name, Class<?>... parameterTypes) 

Method[] getMethods() 

(和相應的getDeclaredMethod()變體)。

因此,標準Java庫中沒有用於直接獲取所需內容的API - 您需要獲取所有方法,使用正確的名稱篩選那些方法,然後檢查參數類型。

或者您也許能夠找到一個第三方庫,爲您做到這一點。例如,reflections庫有一個getMethodsMatchParams(Class<?>... types)方法。

jOOR library還提供了用於找到具有「相似」簽名的方法的各種方法。