2012-02-01 34 views
2

按標題, 爲什麼List<MyType>.class不起作用?我如何獲得這種類型的類(作爲類型參數傳遞給函數)。爲什麼列表<MyType> .class不起作用?

+0

您可能會發現這篇文章http://docs.oracle.com/javase/tutorial/java/generics/erasure.html這個問題有用http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens – 2012-02-01 23:50:15

回答

1

在Java中,List<MyType>.classList.class。由於稱爲「類型擦除」,這兩者相當。

+0

是的,但有時需要泛型類型,例如json反序列化。 Gson像這樣處理它:http://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Gener – Kevin 2012-02-01 23:52:28

+0

其實我只是需要 – gotch4 2012-02-01 23:53:37

+0

「泛型」的概念,根本不存在於JVM(運行時)上。當代碼被編譯時,通用信息被擦除 - 被銷燬。 – luiscubal 2012-02-01 23:55:54

1

Java泛型基於type erasure - 運行時不存在單個對象的類型參數。如果你描述你特別想要達到的目標,我們可能會想出一個解決方法。

+0

我想他想把這個類作爲類型參數傳遞給反射函數。他應該全部設置 - 只是通過List.class。 – user949300 2012-02-01 23:54:52

0

您也可能想要指出泛型所隱含的約定在編譯時執行。編譯器執行正確的強制轉換,檢查類型,然後發生類型擦除。

0

爲谷歌GSON圖書館解決方案是使用TypeToken:

Type a = new TypeToken<List<MyClass>>() {}.getType(); 
相關問題