Java8 接口中的默认方法

  公司代码中分为common code和product specific code,现在有:

一份common.java文件,定义了一些通用方法

一份productA_X.java , 一份productB_X.java,都实现了class X。

 

现在一个productA相关的方法在common.java中定义,并且调用了一个新方法A,该方法定义在productA_X.java中。

问题是一个产品相关的代码不应该放在common code中,但是由于历史原因,目前都是这样做的,所以就要解决其他产品中class X不存在A方法的问题。

1. 最笨的方法,每次一个产品中新增方法A在对应的class X中,其他产品创建一个新方法A,方法内容为空,只提示当前产品并未实现该方法

2. 创建一个接口,将这些方法都定义为默认方法,提供一个默认实现。各个产品的class X只要实现了这个接口即可,也就默认有了A这个方法。这样每次在一个产品中新增方法后,都在该接口中定义一个默认方法即可。

3. 由于接口的默认方法在java1.8中才有,所以在之前的java版本中,不能用方法2,公司中的代码就使用了一个class,让class X去继承这个class。这样就出现新的问题,Java不支持多重继承,如果class X本来就有一个父类,这种方法就也不适用了。这种情况下就只能使用最笨的方法1了,每个产品的更新都要导致其他产品的改动。

本来这个不应该是一个问题,因为common code中不应该依赖于具体的产品。在没有办法的情况下,公司代码又不能使用新的版本,就产生了很多麻烦。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值