2013-07-30 78 views
0

我想查找發送到泛型類的參數的類名,如下所示。 獲取泛型類參數的類名稱

 
public abstract class RootClass<T extends Iface> { 
    protected ApplicationContext applicationContext; 
    public T getIfaceBean() { 
     return applicationContext.getBean(T.class); 
    } 
} 

But it looks like I can't do T.class(由於Type Erasure?)。

所以,這樣的動作可能與Java泛型

如何使用Java泛型實現此類功能?

+0

這是哈克,你最好通過Class類型作爲參數的構造函數或方法。 –

+0

與http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in​​-java相同您必須將該類作爲參數傳遞。 –

+1

如果你有一個子類(你必須擁有)和具體類型,你可以通過反射來獲得。這裏是一個例子http://ideone.com/9ZFujO –

回答

7

由於類型擦除,您不能說T.class,因爲T在運行時不存在。

你能做的最好是採取Class<T>類型的參數,以獲得Class對象:

public T getIfaceBean(Class<T> clazz) {