我对为什么整数类型Arraylist能够向其中添加字符串感到非常困惑。如下所示,“(”“ 0067”)“被添加到addtolist(List list)方法的列表中,并且由于它是String,所以代码应该抛出错误,但不是。谁能解释为什么此代码成功运行?

//test program


import java.util.ArrayList;
import java.util.List;

public class listing {


public static void main(String[] args) {
    List<Integer> lst = new ArrayList<Integer>();

    addToList(lst);

    System.out.println(lst.get(0));
}

public static void addToList(List list) {
    list.add("0067");
}
}

最佳答案

查看方法签名:

public static void addToList(List list)


listraw type,启用警告应该警告您类似以下内容:


  列表是原始类型。对泛型类型List的引用应参数化


为了在编译时进行更强大的类型检查,您需要将其更改为:

public static void addToList(List<Integer> list)

10-06 13:15