Thi*_*ilo 2 java refactoring binary-compatibility
我需要在Java中进行一些重构,我需要保持一定程度的二进制兼容性.在这种情况下,我想删除一些遗留接口,这些接口不再在任何地方使用,并且需要相当大的(也是已弃用的)外部依赖项.
我有C实现接口的类,I我有一个代码调用一个实例的方法(在接口中声明)C.调用代码知道它正在使用C,而不仅仅是接口.
class C implements I {
void theMethod(){} ; // is declared in the interface I
}
C object;
object.theMethod();
Run Code Online (Sandbox Code Playgroud)
当我从类定义中删除接口(但保留所有方法)时,调用代码(根本不涉及接口)是否仍然有效(没有重新编译)?
是的,它会起作用 - 只要它没有明确地在I任何地方引用接口.
类或接口的二进制表示使用其他类和接口的二进制名称(第13.1节)以符号方式引用其他类和接口及其字段,方法和构造函数
ClientClass引用类的字段/方法的类C不包含对I类可能实现的接口的隐式引用.