【问题标题】:Why wasn't the diamond operator implemented when generics were introduced? [closed]为什么在引入泛型时没有实现菱形运算符? [关闭]
【发布时间】:2011-08-14 22:21:58
【问题描述】:

在 Java 7 中,他们终于实现了diamond operator,它允许您在使用泛型时省略初始化的重复。

例如List<String> list = new ArrayList<>();

这看起来很方便,因为它避免了编写“无用”的代码。它似乎非常有用,我很好奇为什么在引入泛型时没有实现它。

【问题讨论】:

  • 他们没有做很多事情。时间和资源限制。
  • 我很好奇为什么 Java 会采取如此无用的路径,而不是像 VB .NET 和 C# 允许的那样完全省略重复(var x = new ArrayList() 或 Dim x As /= 新的 ArrayList(字符串)
  • 我认为这里的任何人都无法明确回答这个问题,除非他们是实际设计 Java 编程语言的委员会的成员。这是一个有趣的问题,但我认为如果没有得到极少数人的反馈,就无法给出一个好的答案。
  • 因为他们没有想到一切?因为人不完美?因为事后看来是20-20?我认为最初省略它并不是故意的。
  • 在我的 C++ 眼中,这看起来很危险 ;-) 但是这真的被称为 Java 中的“操作符”吗?它的作用是什么?我知道 Perl 有一个菱形运算符,但它实际上做了一些事情。 (我今天也刚刚了解到 Java 没有标准化......)

标签: java generics diamond-operator


【解决方案1】:

这是一个类似于问“为什么要开发无绳电话?为什么我们不直接开发手机?”的问题。答案是“需要是发明之母”。设计泛型时,必须设计一个编程结构,来完成泛型成功的工作。现在需要最大限度地提高开发人员的生产力,因此发明了钻石算子。

猜你喜欢
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多