首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java 10中使用局部变量类型推断的限制

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

Stack Overflow用户
提问于 2018-03-10 15:10:37
回答 1查看 8K关注 0票数 7

Java 10介绍了局部变量类型推断特性二八六.

我们可以使用保留类型名称的var进行局部变量类型推断

但是使用它有一些限制。

有人能总结一下在哪些情况下我不能使用var吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-10 15:10:37

1.顾名思义,只能用于局部变量.

2.没有初始化项的变量不能使用局部类型推断

下面的代码不起作用

案例1:

代码语言:javascript
复制
  var xyz = null;
            ^
  (variable initializer is 'null')

案例2:

代码语言:javascript
复制
var xyz;
            ^
  (cannot use 'val' on variable without initializer)

案例3:

代码语言:javascript
复制
   var xyz = () -> { };
            ^
  (lambda expression needs an explicit target-type) 

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

可以找到更多的细节,可以找到由空指针建议的这里

代码语言:javascript
复制
   var X=10,Y=20,Z=30 // this is not allowed 

4: Var作为参数

代码语言:javascript
复制
   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.数组初始化程序是不允许的,可以通过找到尼古拉建议的这里来获得更多详细信息。

代码语言:javascript
复制
var k = { 1 , 2 };
        ^   
(array initializer needs an explicit target-type)

5.不允许方法引用

代码语言:javascript
复制
var someVal = this::getName;  
 error: cannot infer type for local variable nameFetcher
  (method reference needs an explicit target-type)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49210591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档