List list1 = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList(); 有什么不一样?
Listlist1=newArrayList<Integer>();List<Integer>list2=newArrayList();list1.add("hello"...
List list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList();
list1.add("hello");//正确
list2.add("hello");//报错 展开
List<Integer> list2 = new ArrayList();
list1.add("hello");//正确
list2.add("hello");//报错 展开
展开全部
List list1 = new ArrayList<Integer>();
list1.add("hello");//正确
上面的代码正确是因为你实际是是相当于是用的List<object>,你add()方法实际调用的是List.add(Object),所以显示正确。
List<Integer> list2 = new ArrayList();
list2.add("hello");//报错
这个代码报错是因为你在初始化list的时候指明了添加元素的类型只能是Integer
我们来看下List的类声明
public interface List<E> extends Collection<E> {
boolean add(E e);
}
可以发现如果不指定泛型,默认是Object,如果指定了那么它们方法中就必须是指定的类型
当然泛型其实是一个语法糖,在编译期间就会进行类型擦除,实际上最后都会变成
List list = new ArrayList();
如果觉得我的回答对你有帮助可以简书或者微信关注:早晚程序员
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询