2013-03-05 37 views
0

的類型,我有一個ArrayList<Container>,然而,Container可以Container<String>Container<Integer>等,而迭代ArrayList中,我需要找出它是什麼類型的容器,並作出相應的反應。我知道java有類型擦除,但是有沒有辦法預先存儲類型並在以後檢索?像得到非齊次容器的元素

public T type; 

,並使用它以後如

container.type A = container.dosomething(); 
+0

一個ArrayList是什麼?提供更多的代碼肯定會有所幫助。 – 2013-03-05 14:28:30

+0

可能的重複:http://stackoverflow.com/questions/1942644/get-generic-type-of-java-util-list – 2013-03-05 14:32:07

回答

0

變量的類型是編譯時的概念。其目的僅僅是爲了讓編譯器確定該變量或表達式允許哪些操作。因此,「在編譯時不知道的類型」是完全沒有用的,因爲編譯器不知道什麼可以用它來完成。所以變量也可以輸入Object

0

在運行Java不繼續泛型類型的信息。發生類型刪除,並且所有容器都被認爲是相同的運行時類型。使用反射可以獲得有關泛型的信息,但這種努力很少值得。您應該考慮重新設計代碼,或者在容器中的元素上使用getClass()來確定容器中實際元素的類型。

+0

創建自己的容器類型,保留類的副本是一個重新設計的例子,你可能會考慮。 – RudolphEst 2013-03-05 14:30:43