繁体   English   中英

Java 什么时候一起使用密封类和记录?

[英]When are sealed classes and records used together in Java?

密封类的JEP说:

密封类不依赖于记录 (JEP 384) 或模式匹配 (JEP 375),但它们都可以很好地工作。

“工作顺利”是什么意思? 是否有任何建议在某些特定情况下使用该组合?

记录不能扩展另一个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM