Java-JDK16的Record

在JDK16中引入了一个特殊的类,Record(记录);其状态不可变,而且公共可读。

创建一个Record:

public record Point(double x, double y) {
}

这个Point的实例字段被称为组件(component)

并且会为这个类提供一个构造器:

Point(double x, double y)

以及组件的访问器方法:

public double x()

public double y()

public class RecordClass {
    public static void main(String[] args) {
        var point = new Point(1.1,1.2);
        var x = point.x();
        var y = point.y();
        System.out.println("x:" + x + "\ny:" + y);
    }
}
x:1.1
y:1.2

Process finished with exit code 0

此外,每个记录还有3个自动定义的方法:toString、equals、hashCode

可以给记录增加自己的方法以及静态字段,但是不能添加实例字段!

记录的实例字段(这里说的实例字段指组件)会自动为final字段,不过,它们可能是可变对象的引用。

比如字段中添加一个Date when,这样记录实例将是可变的。

如果希望记录实例是不可变的,那么字段就不能使用可变的类型;

对于完全由一组变量表示的不可变数据,要使用记录而不是类;如果数据是可变的,或者数据表示可能随时间改变,则使用类。

另外,记录的标准构造器如果需要自定义,可以采用简洁的方式

public record Point(double x, double y) {
    // 标准构造器的简洁自定义方式
    public Point{
        if (true) {
            // 自定义代码
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值