【发布时间】:2020-06-18 01:56:31
【问题描述】:
【问题讨论】:
标签: java record sealed sealed-class
【问题讨论】:
标签: java record sealed sealed-class
记录不能扩展另一个类。因此,“密封类”+“记录”根本不起作用。
然而,记录可以实现接口,并且“密封类”提案是该 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()方法存在,从而让Student和Teacher实现Person接口。
这两个特征似乎完全正交。他们不会互相妨碍,也不需要或至少(显着)受益于对方的存在。
【讨论】: