[英]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.