【发布时间】:2017-11-16 16:19:21
【问题描述】:
这3行有什么区别吗?
List list2 = new ArrayList<String>();
List list2 = new ArrayList<>();
List list2 = new ArrayList();
据我了解,有关泛型的所有信息都会在运行时删除。因此,只有可验证的类型很重要。所以上面的代码行对我来说意味着同样的事情。如果我错了,任何人都可以给我一些显示差异的例子吗? p.s.对不起我的英语
【问题讨论】:
-
我不相信你的第二个例子是有效的,因为
<>运营商不会有任何信息。可能是List<String> list2 = new ArrayList<>(); -
泛型在运行时被擦除,但它们存在于编译时,让编译器检测到许多潜在的问题。在这种情况下,您使用的是原始类型
List list2,它可以接受任何列表,但因此容易出现许多问题。更多信息:What is a raw type and why shouldn't we use it? -
对不起,第二行写错了,我的错。但无论如何,我知道原始类型,我对“表达的正确部分”感兴趣。有什么区别: new ArrayList
();新的数组列表();我认为两者的意思相同 -
@ViacheslavOn "有什么区别:new ArrayList
(); new ArrayList (); " 不 "知道原始类型“否则你不会问这个问题。因为这两者之间的区别在于一个是原始类型,而另一个不是。
标签: java generics collections