当泛型失败时,我能得到一个例子吗?

smu*_*kes 2 java generics

我只是对泛型有一个普遍的问题.我已经使用它们多年了,并且听说它们不完美,因为它们在编译时被剥离了它们的类型(对吗?).我很难找到导致它们失败的特定代码的示例或解释.任何人都可以提供代码示例和/或解释吗?

Kur*_*lor 5

你所指的是Type Erasure,编译器删除所有与类型参数相关的信息,并在类或方法中输入参数.这可能是一个不利的例子是:

ArrayList<String> stringList = new ArrayList<String>();
ArrayList<Integer> integerList = new ArrayList<Integer>();

System.out.println(stringList.getClass().
    isAssignableFrom(integerList.getClass()));
Run Code Online (Sandbox Code Playgroud)

我们希望这会打印错误,但事实上它确实是真的.stringList和之间没有阶级区别integerList.