[英]Can removing final from a class definition break backwards compatibility?
[英]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.