List、List<object>、List<?>三者的区别
public class Demo01 { public static void main(String[] args) { // 第一段:泛型出现之前的集合定义方式 List a1 = new ArrayList(); a1.add(new Object()); a1.add(new Integer(111)); a1.add(new String("hello a1")); // 第二段:把a1引用赋值给a2,注意a2与a1的区别是增加了泛型限制<Object> List<Object> a2 = a1; a2.add(new Object()); a2.add(new Integer(222)); a2.add(new String("hello a2")); // 第三段:把a1引用赋值给a3,注意a3与a1的区别是增加了泛型<Integer> List<Integer> a3 = a1; a3.add(new Integer(333)); // 以下两行编译报错,不允许增加非Integer类型进入集合 // a3.add(new Object()); // a3.add(new String("hello a3")) // 第四段:把a1引用赋值给a4、a1与a4的区别是增加了通配符 List<?> a4 = a1; // 以下编译报错,不允许增加任何元素 // a4.add(new Object()); // a4.add("111"); // a4.add(111) System.out.println("=======" + a4 ); // 允许删除和清除元素 a1.remove(0); a4.clear(); } }