2011-03-04 79 views
0

如何在泛型類型上調用特定方法?我想調用一個getter/setter方法。Java:通過泛型反射調用特定方法

編輯:例如:

class BurningSun<T> 
{ 
    public void kitchenSink() 
    { 
     Class c = Class.forName(/*What to put here for <T> ?*/) 
       /* 
       Reflections code 
       */ 
    } 
} 

嗯,所以如何bean的getter方法調用,並且在不同的框架集?

+0

是這種方法靜態? – 2011-03-04 18:35:10

+1

反射是一種運行時功能,所以泛型幾乎沒有什麼區別。即與非泛型類型相同。 – 2011-03-04 18:37:43

+0

不,這是一個標準的getter方法。 – Rnet 2011-03-04 18:38:34

回答

2

那麼基於反射的所有方法調用最簡單的方法就是將對象推入方法中,祈禱它可以工作。所以鑄造&保持你的手指交叉。

3

在泛型類型中,如果沒有人告訴您,則無法在運行時獲取類型參數的名稱。

在運行時,BurningSun<String>BurningSun<Integer>是完全等效的,甚至可以將其中一個投入到另一箇中(但這不是類型安全的)。

所以,通常如果你真的需要泛型對象中類型參數的類對象,你可以讓別人在構造函數中給你。

class BurningSun<T> { 


    private Class<T> paramClass; 

    public BurningSun(Class<T> pClass) { 
     this.paramClass = pClass; 
    } 

    public void kitchenSink() { 
     T t = paramClass.newInstance(); 
    } 
} 

(您將需要趕上或申報這裏有一些例外。)