Java中的类型推断是指自动检测变量的数据类型。这种自动检测通常在编译时发生。它是Java 10的一项功能,它使开发人员可以跳过声明与局部变量关联的类型的操作。局部变量是在方法,初始化块,for循环等中定义的局部变量。类型通常由JDK标识。
直到Java 9,以下语法用于定义类类型的局部变量-
class_name variable_name = new class_name(Arguments);
这样,对象的类型将在声明的右侧指定。
相反,在Java 10中引入了LVTI或局部变量类型推断,可用于声明局部变量,而无需指定变量的数据类型。可以在声明局部变量之前放置关键字“ var”。
以下是一个例子-
import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String ap[]) { List<Map> my_data = new ArrayList<>(); } }
上面的代码可以重写为-
import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String ap[]) { var my_data = new ArrayList<>(); } }
以下是使用LVTI迭代“ for”循环时的演示-
public class Demo { public static void main(String a[]) { int[] my_arr = new int[5]; my_arr = { 56, 78, 90, 32, 12 } ; for (var x : my_arr) System.out.println(x + "\n"); } }
输出结果
56 78 90 32 12
名为Demo的类包含主要功能。定义一个整数数组,并将元素放入该数组中。要遍历数组中的元素,请使用'var'关键字,并将这些元素打印在屏幕上。
主要内容:Java10 局部变量类型推断,声明局部变量的旧用法,声明局部变量的新用法,需要注意的事项,Java10 局部变量类型推断的示例Java10 局部变量类型推断 局部变量类型推断是 Java 10 以后可用语言最明显的变化之一。它允许使用 var 定义变量而不指定它的类型。编译器使用提供的值推断变量的类型。这种类型推断仅限于局部变量。 声明局部变量的旧用法 声明局部变量的新用法 需要注意的事项 在成员变量、方法参数、返回值的情况下没有类型推断。 局部变量应在声明时初始化,否则编译器将无法
在Java10中,我们可以使用类型推断。
谁能总结一下在哪些情况下我将无法使用var?
此代码只是使用中间的来删除重复项,其中元素之间的相等性是根据提供的比较器定义的。 让我们给局部类型推断一个机会吧,我(天真地)想...于是我将上面的代码改为: 这对我来说是有意义的,因为的类型可以从的类型推断出来,或者我是这么想的。但是,修改后的代码无法编译,并生成以下错误: 注意1:编译代码的一种方法是将返回类型更改为。不过,那是一套很难用的... 注意2:另一种方法是在比较器中不使用逆变,但我
我安装了JDK 10以试用新特性,但我对感到很困扰--出于某种原因,即使JDK被添加到IntelliJ(版本2018.1)中,以下代码仍然无法编译,说Java找不到: 我是不是遗漏了一些显而易见的东西,或者我应该启用IntelliJ中的一个选项? 编辑:项目和模块SDK和语言级别都设置为Java10安装和LVL。10(但不是级别)。
null 这是有意义的,但是在编译时的类型是什么?它是还是其他东西?