2015-12-24 74 views
2

所以我現在正在度假,沒有電腦。但...不能停止考慮代碼。完全癡迷。無論如何,我自己不能測試這個現在,所以問這裏如果這將工作:Java:泛型參數爲.class的泛型方法

public <T> void foo(T t){ 
    doSomething(T.class); 
} 

我知道所有類型擦除,但從來沒有想過這種方式。在這種情況下,T將成爲傳遞給此方法的實際對象,這要感謝泛型在運行時使用的隱式轉換,實際的類類型T是否會在運行時傳遞給doSomething?或者說T本質上只是Object而鑄造廢墟的事實呢?

+0

這不是一個重複的問題,OP是問爲什麼這不起作用,他提供了一個不同的例子。此外,他並沒有要求像其他問題一樣的解決方法!我沒有重新開放privelege,但是這不能被標記爲重複 – Tarik

回答

2

這將無法正常工作。

在運行時無法獲得泛型類型的classgetClass()

在你需要做的東西與實際類本身的情況下,您可以選擇存儲,並明確必須把它分配給像Class<T> genericClass

public <T> void foo(T t, Class<T> genericClass) { ... }