将字符串添加到List <Integer>

ken*_*ken 8 java generics

以下代码的结果:

public class ListIntegerDemo1 {

    public static void addToList(List list) {list.add("0067");list.add("bb");}
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        addToList(list);
        System.out.println(list.get(0));
    }     
}
Run Code Online (Sandbox Code Playgroud)

"0067".

我本来期望RuntimeException或类似的,因为我将一个String添加到整数列表.

为什么它没有任何问题?

Era*_*ran 9

在运行时,泛型类型参数被删除,因此,List<Integer>变成List了,你可以在任何引用类型添加到它.

如果更改addToList(List list)addToList(List<Integer> list),则编译器将阻止您在此方法中将字符串添加到该列表.

  • @SaurabhJhunjhunwala你会收到一个警告,在这里使用原始列表类型 - `addToList(列表列表)` - 由于你使用原始列表类型,你没有编译错误. (3认同)