记录不能扩展另一个类。因此,'封闭类' + '记录' 根本不起作用。
然而,记录 可以 实现接口,并且“封闭类”提案是这个 JEP 的全名“封闭类和接口”的缩写。
封闭接口 + 记录可以工作。我认为在这里使用术语“好”并不特别适用。它不会不工作,我想。
您可以使您的记录定义实现一个封闭接口。如果您的封闭接口包含与记录自动生成的方法定义匹配的任何方法,则事情只是顺理成章的完成。例如:
public sealed interface Person permits Student, Teacher {
String name();
}
public record Student(String name, int id) implements Person {}
public record Teacher(String name) implements Person {}
将会工作。记录功能使name()
方法存在,从而允许学生和教师履行Person
接口。
这两个特性似乎完全正交。它们不会相互干扰,也没有一个需要或者(显著)受益于另一个的存在。