我只是对泛型有一个普遍的问题.我已经使用它们多年了,并且听说它们不完美,因为它们在编译时被剥离了它们的类型(对吗?).我很难找到导致它们失败的特定代码的示例或解释.任何人都可以提供代码示例和/或解释吗?
你所指的是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.
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |