Java实现接口时方法需新增额外参数的最优方案咨询
方案选择结论
优先选择第一种新增双参数onResp实现的方案,不要选择将MyClass设为抽象类的方案。
方案对比说明
为什么不推荐抽象类方案
- 抽象类无法直接实例化,如果你后续需要直接创建
MyClass的对象使用,必须额外编写一个子类实现接口要求的双参数onResp方法,平白增加不必要的继承层级,提升代码复杂度。 - 如果你原有代码中已经存在依赖
IResp接口实例的逻辑,抽象类方案还是需要你提供对应的具体实现类,没有减少实际工作量,反而会引入额外的改造工作量。
第一种方案的实现建议
你新增的三参数onResp属于方法重载,和接口定义的双参数方法是完全独立的两个方法,只要按要求实现接口约定的双参数方法即可正常使用MyClass类:
- 双参数方法不要留无逻辑的空实现,建议直接抛出不支持操作的异常,避免后续误调用无逻辑的空方法出现不可预期的问题,示例代码如下:
public class MyClass implements IResp { @Override public Response onResp(String a, String b) throws Throwable { throw new UnsupportedOperationException("请调用三参数重载方法:onResp(String a, String b, String c)"); } public Response onResp(String a, String b, String c) throws Throwable { // 你的业务逻辑 } }
- 你自己的业务逻辑全部放在三参数重载方法中即可,自己使用
MyClass实例时直接调用三参数版本就可以正常运行。
内容的提问来源于stack exchange,提问作者curiousCat
相关产品推荐
相关产品推荐

