嗨,我使用addAll方法的集合框架。請在下面找到我的代碼。它對代碼1工作正常。對於代碼2,它給我編譯錯誤。我不知道爲什麼它沒有給我錯誤代碼1.請給出原因。需要澄清addAll方法的行爲
代碼1
public static void main(String[] args) {
List<Integer> firstList=new ArrayList<Integer>();
List secondList=new ArrayList(); //without generic
secondList.add("string value");
firstList.addAll(secondList);
System.out.println(firstList);
}
輸出:
[string value]
代碼2
public static void main(String[] args) {
List<Integer> firstList=new ArrayList<Integer>();
List<String> secondList=new ArrayList<String>(); //with generic
secondList.add("string value");
firstList.addAll(secondList);
System.out.println(firstList);
}
輸出
compilation error
您嘗試添加字符串列表爲整數列表,這是不可能的。這是泛型的最佳使用,在編譯時間本身期間,您會將此錯誤視爲錯誤。 –
您正在使用示例一中的原始類型。你可以添加任何東西到這個列表中,但是在get()它們時不能對元素類型做任何假設。它本質上是不安全的。 – jlordo