2011-11-14 50 views
1

我有方法的樣子如何通過通用的這個方法

doSomething(Class<T> valueType) 

我叫通價值像

Map.class,Long.class

爲參數成以上方法。如果我想使用通用。我應該如何將價值轉化爲上述方法? doSomething(Class<Map>);不工作

+0

'類別'是一個類型不是變量。 –

+0

如何更正它? – cometta

+0

你可能會嘗試? doSomething(類別 clazz);如果你正試圖執行一類地圖。我不太清楚你在做什麼。 是泛型的類。 A列表強制執行類型,類語句一般都是某種實例化類的工廠方法。閱讀文檔 - 這是你最好的選擇。 –

回答

2

Map.class返回Class<Map>類型的對象,返回Long.classClass<Long>類型的對象。

那麼通過Map.class你的T需要給我地圖。 如果你希望你的T是一個通用的,比如ArrayList<String>,那麼這是不可能的。 原因是Java中的泛型使用了類型擦除,這意味着泛型類型僅在編譯時存在,但在運行時會被刪除。因此,不存在像ArrayList<String>.class這樣的東西。

Java泛型與C#泛型相當不同。