List<?>:
List<?> list;
表示list变量可以引用泛型为任何类型的List,但是list不能调用add()方法添加元素,但可以调用remove()方法删除元素,使用get()方法获取元素返回的Object对象,需要强制转换成对应的类型,如:
List<?> list;
List<String> strList = new ArrayList<String>();
strList.add("abc");
list = strList;//可以
list.add("aa");//不可以
list.add(new Object());//不可以
List<Date> dateList = new ArrayList<Date>();
dateList.add(new Date());
list = dateList;//可以
list.remove(0);//可以
Object o = list.get(0);//可以
Date d = (Date)list.get(0);//可以
List<Date> dList = (List<Date>)list;//可以强制转换
List:
不加泛型的List可以存放任意类型的元素,且各个元素的类型可以不同,可以调用add()方法添加任何类型的元素,使用get()方法获取元素返回的Object对象
List list2;
list2 = strList;//可以
list2.add("aaa");//可以
list2.add(new Date());//可以