系列中的上一篇
当前教程
使用 Var 类型标识符
系列中的下一篇

系列中的上一篇: 在您的程序中创建数组

系列中的下一篇: 在您的程序中使用运算符

使用 Var 类型标识符

 

Var 关键字

从 Java SE 10 开始,您可以使用 var 类型标识符来声明局部变量。这样做,您让编译器决定您创建的变量的实际类型。创建后,此类型无法更改。

考虑以下示例。

String message = "Hello world!";
Path path = Path.of("debug.log");
InputStream stream = Files.newInputStream(path);

在这种情况下,必须声明三个变量 messagepathstream 的显式类型是多余的。

使用 var 类型标识符,前面的代码可以改写如下

var message = "Hello world!";
var path = Path.of("debug.log");
var stream = Files.newInputStream(path);

 

使用 Var 的示例

以下示例展示了如何使用 var 类型标识符使您的代码更易于阅读。这里,strings 变量被赋予类型 List<String>,而 element 变量被赋予类型 String

var list = List.of("one", "two", "three", "four");
for (var element: list) {
    System.out.println(element);
}

在此示例中,path 变量的类型为 Path,而 stream 变量的类型为 InputStream

var path = Path.of("debug.log");
try (var stream = Files.newInputStream(path)) {
    // process the file
}

请注意,在前面的两个示例中,您已使用 var 在 for 语句和 try-with-resources 语句中声明变量。这两个语句将在本教程的后面部分介绍。

 

使用 Var 的限制

使用 var 类型标识符存在一些限制。

  1. 您只能将其用于在方法、构造函数和初始化块中声明的局部变量
  2. var 不能用于字段,也不能用于方法或构造函数参数。
  3. 编译器必须能够在声明变量时选择一个类型。由于 null 没有类型,因此变量必须具有初始化器。

遵循这些限制,以下类无法编译,因为无法将 var 用作字段或方法参数的类型标识符。

public class User  {
    private var name = "Sue";

    public void setName(var name) {
        this.name = name;
    }
}

以下代码也是如此。

在这种情况下,编译器无法推断出 message 的实际类型,因为它缺少初始化器。

public String greetings(int message) {
    var greetings;
    if (message == 0) {
        greetings = "morning";
    } else {
        greetings = "afternoon";
    }
    return "Good " + greetings;
}

上次更新: 2021 年 9 月 23 日


系列中的上一篇
当前教程
使用 Var 类型标识符
系列中的下一篇

系列中的上一篇: 在您的程序中创建数组

系列中的下一篇: 在您的程序中使用运算符