簡體   English   中英

從 Java 類中刪除冗余超級接口是否會破壞二進制兼容性?

[英]Does removing a redundant superinterface from a Java class break binary compatibility?

在以下示例中:

interface I {
    int F = 1;
}
class A extends B implements I { ... }
class B implements I { ... }

class A上的implements I是多余的。 如果我刪除它,它會破壞二進制兼容性嗎?

問題背景:如果我在class A上調用getFields() ,我會從interface I獲得公共字段F ,但是如果我刪除冗余implements I ,我將不再獲得字段F

讓我們在示例中添加一個 C 類。 所以你有了

interface I {
    int F = 1;
}
class B implements I { ... }
class A extends B implements I { ... }
class C extends B { ... }

我重新排列了它們,所以超類在最上面。

由於超類 B 實現了 I,而 C 類似於 B,我希望它也實現了 I。因此,類 A 上的implements I應該是多余的,可以刪除。

另一方面,如果你刪除類 B 上的implements I ,它會對 C 產生影響,C 也將不再實現 I。因此 B 上的implements I不是多余的,因為它要求 B 和所有子類都實現 I .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM