簡體   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