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

Meh*_*lik -2 java java-10

我正在阅读java 10中的新功能.

但我无法理解什么是局部变量类型推断

有人可以解释一下.

gar*_*tiz 5

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

的使用var是可能的方法的范围仅(故名:内局部变量),它允许仅在类型可以推断的发言(因此后缀:类型推断).

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

var readMe;
readMe = "notAGoodVariableName";
Run Code Online (Sandbox Code Playgroud)

或这个:

var readMe = null;
Run Code Online (Sandbox Code Playgroud)

不被允许.

此外,请注意,因为它使代码不那么明确,如果在语句中使用var x = getCapitalized('abc'),它可能会为代码阅读器造成混淆.

最后,var不是关键字,而是保留类型名称.不是关键字可确保所有遗留应用程序不会中断.但作为保留类型名称仍然意味着将存在单个断点,并且遗留应用程序将必须重命名所有类别/接口,这些类别/接口在升级到Java 10时完全命名为var(非常罕见且反命名约定的情况).

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

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

https://developer.oracle.com/java/jdk-10-local-variable-type-in​​ference