record类

在上文中,都是使用 class 关键字定义类的。下面讲解另一个用于定义类的关键字: record。record 关键字是由 Java 16 正式发布的,其作用在于提供了一种更简洁、更紧凑的 final 类的定义方式。也就是说,record 类是一种 final 类,即不可变类。

例如,使用 class 关键字定义一个表示 “时钟” 的 final 类 Clock,其中包含两个被 final 修饰的变量,一个表示 “时钟上有多少个小时” 的 hours,另一个表示 “每个小时有多少分钟” 的 minutesperhour。此外,在 Clock 类中还包含了 3 个方法:一个是有参构造方法,一个是用于获取 “时钟上有多少个小时” 的 getHours() 方法,另一个是用于获取 “每个小时有多少分钟” 的 getMinutesperhour() 方法。Clock 类的代码如下:

public final class Clock{
    final int hours;        // 小时数
    final int minutesperhour; // 每小时的分钟数

    public Clock(int hours, int minutesperhour) {
        this.hours = hours;
        this.minutesperhour = minutesperhour;
    }

    public int getHours() {
        return this.hours;
    }

    public int getMinutesperhour() {
        return this.minutesperhour;
    }
}

下面演示如何使用 record 关键字把上述的 final 类修改为 record 类。代码如下:

public record Clock(int hours, int minutesperhour) {
    public int getHours() {
        return this.hours;
    }

    public int getMinutesperhour() {
        return this.minutesperhour;
    }
}