Java10 - 局部变量类型推断
JEP 286 − 局部变量类型推断
局部变量类型推断是从 Java10 开始可用语言最明显的变化之一。 它允许使用 var 定义一个变量而不指定它的类型。 编译器使用提供的值推断变量的类型。 这种类型推断仅限于局部变量。
声明局部变量的旧方法。
String name = "Welcome to tutorialspoint.com";
声明局部变量的新方法。
var name = "Welcome to tutorialspoint.com";
现在,编译器通过检查提供的值将名称变量的类型推断为字符串。
值得注意的地方
在成员变量、方法参数、返回值的情况下没有类型推断。
局部变量应在声明时初始化,否则编译器将无法推断并抛出错误。
局部变量推断可在循环语句的初始化块内使用。
无运行时开销。 由于编译器根据提供的值推断类型,因此没有性能损失。
无动态类型更改。 一旦推断出局部变量的类型,就无法更改。
使用局部变量类型推断可以减少复杂的样板代码。
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
示例
以下程序展示了 Java10 中局部变量类型推断的使用。
import java.util.List; public class Tester { public static void main(String[] args) { var names = List.of("Julie", "Robert", "Chris", "Joseph"); for (var name : names) { System.out.println(name); } System.out.println(""); for (var i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } } }
输出
它将打印以下输出。
Julie Robert Chris Joseph Julie Robert Chris Joseph