List<?> 和 List<Object>
这两个是有区别的呢;
相同点: 当调用 list.add()方法的话是可以插入任意类型;
不同点: 一个简单的例子 例如 :
List<? > list = new ArrayList<String>(); //没问题
List<Object> list1 = new ArrayList<String>(); //编译器会提示cannot convert from ArrayList<String> to List<Object>
改成这样的话则 List<? extends Object> list2 = new ArrayList<String>(); //没问题
说明对于 ? 表示任意类型;在类型转换的时候也是任意的;
但是对于 List<Object> 在类型转换的时候反而不能为任意类型,除非声明上下界 List<? extends Object>. |