[英]When are sealed classes and records used together in Java?
记录不能扩展另一个 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()
方法存在,从而允许学生和教师实现Person
接口。
这两个特征似乎完全正交。 他们不会妨碍对方,也不需要或至少(显着)受益于对方的存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.