本文将介绍是 Java 中的 var 关键字以及如何使用它。
从 Java 10(JDK 10)开始,var 关键字已添加到 Java 语言中,支持局部变量类型推断,在该功能中,Java 编译器可根据上下文猜测变量的类型,允许程序员不明确声明变量的类型。
请看下声明局部变量的语句:
List list = new ArrayList();
在此变量声明中,类型信息( List 和 String )在左侧和右侧重复两次,导致重复和样板代码。
因此,可以使用 var 关键字来重写:
var list = new ArrayList();
这个例子可能使用 var 关键字的好处并不明显。来看另一个示例:
List list = Arrays.asList("One", "Two", "Three", "Four", "Five");
可以使用 var 关键字重写如下:
var list = Arrays.asList("One", "Two", "Three", "Four", "Five");
这里,Java 编译器可以根据方法的返回类型推断出变量的类型。
然后,可以直接使用变量:
String first = list.get(0);
再看另一个例子,假设有以下方法:
public Map> foo() {
// return a map
}
在不使用 var 的情况下,调用 foo() 方法时必须显式指定类型,如下所示:
Map> map = foo();
如果使用 var,代码将会简化很多:
var map = foo();
因此,使用 var 关键字可以使代码简洁,更具可读性并减少样板代码。 但是,也有一些限制:
只能将 var 用于局部变量(在方法中)而不能用于实例变量(在类级别)。
不能在 Lambda 表达式中使用 var。
不能将 var 用于方法签名(在返回类型和参数中)。
如果不进行显式初始化,则不能使用 var 声明变量:
var x;
这样不允许,因为局部变量声明需要在右侧进行初始化。 同样,下面的声明也是无效的:
var x = null;