编程语言
首页 > 编程语言> > Java 10:Java 7的Diamond推理是否适用于本地类型推断?

Java 10:Java 7的Diamond推理是否适用于本地类型推断?

作者:互联网

JEP 286开始,我们看到我们将能够在JDK 10(18.3)中使用本地类型推断(var). JEP表示以下编译,这是预期的:

var list = new ArrayList<String>();  // infers ArrayList<String>

我很想知道如果我们尝试以下内容会发生什么:

var list = new ArrayList<>();

我在第二个片段中提出的建议是否会编译?如果是这样(我怀疑),ArrayList会接受Object作为其泛型类型吗?

我自己尝试一下,但我无法访问任何我可以安装早期版本的机器.

谢谢!

解决方法:

是的,var和钻石操作符可以组合在一起.编译器将推断出最具体的泛型类型:

var list = new ArrayList<>(); // Infers ArrayList<Object>
var list = new ArrayList<>(List.of(1, 2, 3)); // Infers ArrayList<Integer>

你甚至可以将它们与匿名类结合起来:

var list = new ArrayList<>() {};

标签:diamond-operator,java-10,java,type-inference,java-7
来源: https://codeday.me/bug/20190930/1835944.html