为什么Java不支持构造函数的类型推断?

Tar*_*ski 7 java generics

EG要创建一个字符串的ArrayList,我们必须做类似的事情

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

而它应该能够推断构造函数的参数类型,以便我们只需要键入

List<String> list = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

为什么不能以与通用方法的类型参数相同的方式输入类型.

Rob*_*anu 22

这是Java 7的改进,也称为钻石操作员.语法将是:

List<String> strings = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

被接受包含在Project Coin中的官方提案是改进的通用实例创建类型推断

根据RémiForax的说法,这一变化已经存在于多变量库中.

  • @Joachim ......我相信你所寻找的短语是"设计监督". (3认同)

Jon*_*eet 6

正如其他人所说,这是Java 7的列表.但是,我想指出,如果您乐意使用静态导入,Google Collections Library已经为各种集合提供了支持.例如,我经常编写如下代码:

List<String> list = newArrayList();
Run Code Online (Sandbox Code Playgroud)

您只需要静态导入并删除之间的空格newArrayList():)

(静态导入将是Lists类,顺便说一句.地图有类似的方法等)

  • 我个人认为这非常难看.:) (4认同)
  • 当你第一次看到它时很奇怪,但是当你习惯它时,它可以显着减少混乱. (4认同)