当前位置: 首页 > 知识库问答 >
问题:

Java10中使用局部变量类型推理的限制

高奇
2023-03-14

谁能总结一下在哪些情况下我将无法使用var?

共有1个答案

张砚
2023-03-14

1.顾名思义,你可以只对局部变量使用它。

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

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

  var xyz = null;
            ^
  (variable initializer is 'null')
var xyz;
            ^
  (cannot use 'val' on variable without initializer)
   var xyz = () -> { };
            ^
  (lambda expression needs an explicit target-type) 

更多的细节可以在这里找到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建议的

var k = { 1 , 2 };
        ^   
(array initializer needs an explicit target-type)
var someVal = this::getName;  
 error: cannot infer type for local variable nameFetcher
  (method reference needs an explicit target-type)
 类似资料:
  • 主要内容:Java10 局部变量类型推断,声明局部变量的旧用法,声明局部变量的新用法,需要注意的事项,Java10 局部变量类型推断的示例Java10 局部变量类型推断 局部变量类型推断是 Java 10 以后可用语言最明显的变化之一。它允许使用 var 定义变量而不指定它的类型。编译器使用提供的值推断变量的类型。这种类型推断仅限于局部变量。 声明局部变量的旧用法 声明局部变量的新用法 需要注意的事项 在成员变量、方法参数、返回值的情况下没有类型推断。 局部变量应在声明时初始化,否则编译器将无法

  • 在Java10中,我们可以使用类型推断。

  • 此代码只是使用中间的来删除重复项,其中元素之间的相等性是根据提供的比较器定义的。 让我们给局部类型推断一个机会吧,我(天真地)想...于是我将上面的代码改为: 这对我来说是有意义的,因为的类型可以从的类型推断出来,或者我是这么想的。但是,修改后的代码无法编译,并生成以下错误: 注意1:编译代码的一种方法是将返回类型更改为。不过,那是一套很难用的... 注意2:另一种方法是在比较器中不使用逆变,但我

  • 本文向大家介绍Java 10中的局部变量类型推断或LVTI,包括了Java 10中的局部变量类型推断或LVTI的使用技巧和注意事项,需要的朋友参考一下 Java中的类型推断是指自动检测变量的数据类型。这种自动检测通常在编译时发生。它是Java 10的一项功能,它使开发人员可以跳过声明与局部变量关联的类型的操作。局部变量是在方法,初始化块,for循环等中定义的局部变量。类型通常由JDK标识。 直到J

  • 我安装了JDK 10以试用新特性,但我对感到很困扰--出于某种原因,即使JDK被添加到IntelliJ(版本2018.1)中,以下代码仍然无法编译,说Java找不到: 我是不是遗漏了一些显而易见的东西,或者我应该启用IntelliJ中的一个选项? 编辑:项目和模块SDK和语言级别都设置为Java10安装和LVL。10(但不是级别)。

  • null 这是有意义的,但是在编译时的类型是什么?它是还是其他东西?