在java 10中使用局部变量类型推断的限制

时间:2018-03-10 15:10:37

标签: java java-10

Java 10引入了局部变量类型推断功能JEP-286

我们可以使用{em>保留类型名称

var使用本地变量类型推断

但是使用它有一些限制。

有人可以总结一下我将无法使用var吗?

1 个答案:

答案 0 :(得分:6)

1。顾名思义,您只能将其用于本地变量。

2. 本地类型推断不能用于没有初始值设定项的变量

例如,下面的代码不起作用

案例1:

  var xyz = null;
            ^
  (variable initializer is 'null')

案例2:

var xyz;
            ^
  (cannot use 'val' on variable without initializer)

案例3:

   var xyz = () -> { };
            ^
  (lambda expression needs an explicit target-type) 

3. Var不能用于在同一行上实例化多个变量

可以找到更多详细信息here由nullpointer建议

   var X=10,Y=20,Z=30 // this is not allowed 

4:Var作为参数

   3.1 var would not be available for method parameters.

   3.2 Var would not be available for constructor parameters.

   3.3 Var would not be available for method return types.

   3.4 Var would not be available for catch parameters.

<强> 4。不允许使用数组初始化程序         更多细节可以通过Nicolai建议here建议

var k = { 1 , 2 };
        ^   
(array initializer needs an explicit target-type)

<强> 5。

不允许使用方法参考
var someVal = this::getName;  
 error: cannot infer type for local variable nameFetcher
  (method reference needs an explicit target-type)