繁体   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