获取非同类容器元素的类型

时间:2013-03-05 14:24:37

标签: java generics

我有一个ArrayList<Container>,但Container可以是Container<String>Container<Integer>等。在迭代arraylist时,我需要找出它是什么类型的容器并据此作出回应。我知道java有类型擦除,但有没有办法预先存储类型并在以后检索它?

之类的东西
public T type;

稍后再使用,例如

container.type A = container.dosomething();

2 个答案:

答案 0 :(得分:0)

在运行时,Java不会保留有关泛型的类型信息。发生类型删除,并且所有容器都被视为具有相同的运行时类型。使用反射可以获得有关泛型的信息,但很少值得努力。您应该考虑重新设计代码,或者在容器中的元素上使用getClass()来确定容器中实际元素的类型。

答案 1 :(得分:0)

变量的类型是编译时概念。其目的仅仅是允许编译器确定该变量或表达式允许的操作。

因此,在编译时未知的&#34;类型&#34;完全没用,因为编译器对它可以做什么一无所知。因此,变量也可以键入Object