Java 14中的记录

问题描述 投票:0回答:1

我正在阅读记录https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Record.html的文档并且不理解“几乎不变”一词。浅层不变是什么意思?如果它是不变的,为什么我们需要一个拷贝构造函数?为什么选择两个“ Hello Worlds!”

对于所有记录类,必须满足以下不变式:如果记录R的成分是c1,c2,... cn,则复制记录实例的方式如下:

 `R copy = new R(r.c1(), r.c2(), ..., r.cn()`);  // copy constructor ?

然后一定是r.equals(copy)

java record
1个回答
2
投票

几乎不变,意味着如果一个类具有字段,则将这些字段视为final。但是,their字段(即字段的字段)不必为final

您不需要实现构造函数,它已经为您实现了这种方式。但是,如果您选择自己实施,例如对于参数验证,则此不变式应成立。

© www.soinside.com 2019 - 2024. All rights reserved.