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");//报错
展开
 我来答
zy199351
2019-03-28 · 超过17用户采纳过TA的回答
知道答主
回答量:47
采纳率:50%
帮助的人:14万
展开全部
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();

如果觉得我的回答对你有帮助可以简书或者微信关注:早晚程序员

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式