use*_*926 0 java generics collections arraylist
我知道这个问题之前已被多次询问过,但我正在寻找基于类型擦除的答案.
为什么编译器在添加时Integer会出错ArrayList<String>?我希望通过类型擦除和add方法的字节码来理解这一点ArrayList.
这与类型擦除或字节代码无关.编译器在擦除泛型类型参数并生成字节代码之前会给出此错误.
当添加Integer到ArrayList<String>,编译器只是给你一个错误,因为Integer不是一个子类的String.
泛型只是在编译时添加了一层类型安全.如果您使用raw ArrayList而不是ArrayList<String>,则可以将Strings和Integers 添加到您的ArrayList.但是,生成的字节码是一样的,不管你是否使用ArrayList或ArrayList<String>.
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |