我有一个ArrayList<Container>
,但Container
可以是Container<String>
,Container<Integer>
等。在迭代arraylist时,我需要找出它是什么类型的容器并据此作出回应。我知道java有类型擦除,但有没有办法预先存储类型并在以后检索它?
public T type;
稍后再使用,例如
container.type A = container.dosomething();
答案 0 :(得分:0)
在运行时,Java不会保留有关泛型的类型信息。发生类型删除,并且所有容器都被视为具有相同的运行时类型。使用反射可以获得有关泛型的信息,但很少值得努力。您应该考虑重新设计代码,或者在容器中的元素上使用getClass()
来确定容器中实际元素的类型。
答案 1 :(得分:0)
变量的类型是编译时概念。其目的仅仅是允许编译器确定该变量或表达式允许的操作。
因此,在编译时未知的&#34;类型&#34;完全没用,因为编译器对它可以做什么一无所知。因此,变量也可以键入Object
。