首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >移除接口是否会破坏对象上的代码调用方法?

移除接口是否会破坏对象上的代码调用方法?
EN

Stack Overflow用户
提问于 2009-12-11 15:52:05
回答 3查看 142关注 0票数 2

我需要在Java中进行一些重构,并且需要保持一定程度的二进制兼容性。在这种情况下,我想删除一些遗留接口,这些接口不再在任何地方使用,并且需要相当大的(也不推荐使用)外部依赖。

我有实现接口I的类C,还有调用C实例上的方法(在接口中声明的)的代码。调用代码知道它正在使用C,而不仅仅是接口。

代码语言:javascript
运行
复制
 class C implements I {
      void theMethod(){} ; // is declared in the interface I
 }

 C object;
 object.theMethod();

当我从类定义中删除接口(但保留所有方法)时,调用代码(根本不引用接口)是否仍然有效(无需重新编译)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-11 15:54:27

是的,只要它不显式地引用接口I anywhere,它就可以工作。

来自JLS: Resolution of Symbolic References

类或接口的二进制表示使用其他类和接口的二进制名称(§13.1)以符号方式引用其他类和接口及其字段、方法和构造函数

引用类C的字段/方法的类ClientClass不包含对该类可能实现的接口I的隐式引用。

票数 5
EN

Stack Overflow用户

发布于 2009-12-11 16:00:47

只要C类的对象从未被称为I,它就可以工作。

你也可以参考Evolving Java-based APIs part 2

票数 2
EN

Stack Overflow用户

发布于 2009-12-11 16:00:15

如果调用代码在任何地方导入接口,那么它可能会出现问题。如果在任何调用代码中都没有接口的import,那么您可以有理由相信您的重构将按计划工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1886489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档