Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个ArrayList<Container>,但是,Container可以是Container<String>等Container<Integer>,在迭代数组列表时,我需要找出它是什么类型的容器并做出相应的响应。我知道java有类型擦除,但是有没有办法预先存储类型并在以后检索它?就像是
ArrayList<Container>
Container
Container<String>
Container<Integer>
public T type;
并在以后使用它,例如
container.type A = container.dosomething();
在运行时,Java 不会保留泛型的类型信息。发生类型删除,并且所有容器都被认为是相同的运行时类型。使用反射可以获得有关泛型的信息,但很少值得付出努力。您应该考虑重新设计代码,或者使用getClass()容器中的元素来确定容器中实际元素的类型。
getClass()
变量的类型是编译时的概念。它的目的只是为了允许编译器确定允许对该变量或表达式进行哪些操作。
因此,“在编译时不知道的类型”是完全没用的,因为编译器不知道可以用它做什么。所以变量也可以是 typed Object。
Object