2012-03-20 143 views
0

是否可以通過反射從非泛型類獲取泛型(參數化)方法? 這裏是什麼,我想做一個示例:Java反射 - 從非泛型類獲取泛型方法

public interface GenericInterface<T> { 
    public T publicMethod(T arg); 
} 

public class NonGenericClassWithGenericMethods { 
    private <T> void privateMethod(GenericInterface<T> arg) { 

    } 
} 

public class Generics { 
    public static void main(String[] args) { 
     try { 
      NonGenericClassWithGenericMethods.class.getMethod("privateMethod", GenericInterface.class).setAccessible(true); 
     } 
     catch(Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

如果我運行泛型,我得到:

java.lang.NoSuchMethodException: NonGenericClassWithGenericMethods.privateMethod(GenericInterface)

謝謝大家

回答

7

.getDeclaredMethod()應該用來代替.getMethod(),它只返回公共的。

+0

謝謝,就是這樣!我太專注於類型擦除,因爲注意到它只是一個可見性的問題:) – lencinhaus 2012-03-20 11:59:47