什么是局部变量类型推断是 JDK 10

What is local-variable type inference is JDK 10

我在 java 10 中经历了新的 features

但是我不明白什么是局部变量类型推断

谁能解释一下。

现在我们可以写 var x = new HashMap<String,String>(); 而不是更冗长的 Map<String,String> x = new HashMap<String,String> (); 并且关于类型的信息不会重复。它比 Java 7 通用实例创建的类型推断 a.k.a 领先一步。钻石。

只能在方法范围内使用 var(因此得名:局部变量)并且只能在类型可以是的语句中使用推断(因此后缀:类型推断)。

解析 var 语句,Java 10 编译器从右侧 (RHS) 表达式推断类型。这意味着使用 var 声明的变量需要立即赋值,甚至这个:

var readMe;
readMe = "notAGoodVariableName";

或者这个:

var readMe = null;

不允许。

此外,请注意,由于它使代码不太明确,如果在 var x = getCapitalized('abc') 等语句中使用,它可能会给代码造成混淆 reader。

最后,var不是关键字,而是保留类型名称。不是 关键字 可确保所有遗留应用程序都不会中断。但是作为 保留类型名称 仍然意味着会有一个断点,遗留应用程序将不得不重命名所有 classes/interfaces ,这些 classes/interfaces 与 完全相同var 同时升级到 Java 10(非常罕见 anti-naming-convention 的情况)。

正确使用它需要遵循一些规则,因此请阅读更多内容:

http://openjdk.java.net/jeps/286

https://developer.oracle.com/java/jdk-10-local-variable-type-inference