Java 10 : Will Java 7's Diamond Inference Work with Local Type Inference?

标签 java java-7 type-inference diamond-operator java-10

来自 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<>() {};

关于Java 10 : Will Java 7's Diamond Inference Work with Local Type Inference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48428434/

相关文章:

Java SimpleDateFormat 解析错误的日期

java - 如何在 Android API < 26/Java 7 中使用 Gson 反序列化 YearMonth?

c# - 与 COM 中的 QueryInterface 或 C++ 中的 dynamic_cast 相比, "as"的成本是多少?

c++ - 为什么此模板参数推断失败?

java - jUnit的@BeforeClass被多次调用

java - 放大标记谷歌地图 V2

java - 如何用 Java 重新绘制面板?

java - 在 NullPointerException 和 IllegalArgumentException 之间进行选择以在对象构造时发出错误信号

java - try-with-resources 在哪里用 InputStreamReader 包装流?

java - JDK 7 中的类型推断比 JDK 6 更严格?