【问题标题】:Difference between new ArrayList<String>() and new ArrayList<>() [duplicate]new ArrayList<String>() 和 new ArrayList<>() 之间的区别 [重复]
【发布时间】:2013-12-20 12:22:01
【问题描述】:

请帮助我理解下面写的两行之间有什么区别,我知道两者都有效但我想知道哪一个更好?

List<String> val = new ArrayList<String>();

List<String> val = new ArrayList<>();

【问题讨论】:

  • 问题不同,题目不同。
  • 在 Java 7 中引入 Diamond Operator 之前无法正常工作...

标签: java


【解决方案1】:
  1. 哪个更好?

    就个人而言,我喜欢使用第一个,因为我认为它对我来说更清楚,但这是您的个人喜好,其他人确实认为它是多余的。

  2. 有什么区别?

    这两行没有区别,它们在 Java 7 中的含义相同(如果您的目标是 Java 6,请使用第一行)。

[编辑]:

此外,正如 Elliott Frisch 所指出的(感谢您提供帮助的澄清),由于类型擦除,没有办法区分两个代码 sn-ps,因为它从两者中删除了泛型。这适用于 JDK 5,当时首次引入泛型类型。

【讨论】:

  • 使用类型擦除它们在每个 jdk 中都意味着相同的东西回到 5。
  • @ElliottFrisch 类型擦除不会插入(不必要的)类型转换吗?我只是想确保我理解我的术语,类型参数不是无限的?
  • 我的意思是在运行时,集合的内容是对象。
  • 啊我(我想我)明白了,在运行时将无法区分,因为泛型都从两者中删除了?
  • 这正是我的意思。
猜你喜欢
  • 1970-01-01
  • 2015-12-07
  • 2014-07-22
  • 2017-05-08
  • 2011-06-03
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多