今天我碰壁了,當時我正要為應用程式添加新功能。我有一個資料記錄,但我需要一些額外的值。將此添加到記錄中是沒有意義的,因為在大多數情況下它們不會被使用并且會是空值,所以我認為繼承,這在這種情況下非常有意義。但是有一個問題,因為 Java 記錄不支持繼承,所以我最終將記錄重寫為具有最終值和 getter 的丑陋 POJO 類。
所以我的問題基本上是 - 為什么沒有繼承。我知道沒有多重繼承,因為它在某些方面很混亂且難以控制,但是我們也有無法繼承的最終類,為什么我們不能有記錄和最終記錄?
uj5u.com熱心網友回復:
請參閱相應的JEP:
記錄是隱式最終的,不能是抽象的。這些限制強調記錄的 API 僅由其狀態描述定義,以后不能由另一個類或記錄增強。
記錄的組成部分隱含地是最終的。此限制體現了一種默認不可變的策略,該策略廣泛適用于資料聚合。
關鍵是減少使用模式的范圍,編譯器/JVM 可以進行記錄概念所涉及的那種優化。
含義:如果您允許子類化,則運行時將不得不處理多型性。這不是記錄背后的意圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/428615.html
上一篇:繼承與組合:組合是否有效地解決了依賴問題?[有效的Java]
下一篇:在連續運行中更改方法行為
