为了账号安全,请及时绑定邮箱和手机立即绑定

将静态方法放在接口中是一种好习惯吗?

将静态方法放在接口中是一种好习惯吗?

慕标琳琳 2023-03-17 15:02:09
假设getAverageDifficulty我的班级中有一个方法Difficulty是这样的:public static Float getAverageDifficulty (List<Difficulty> difficultyList) {     ...         return average; }我的方法显然需要是静态的,因为要求Difficulty. 现在假设我正在使用一个接口,IDifficulty这样我可以稍后更改我的实现。显然,我确实希望我的getAverageDifficulty方法可以从IDifficulty, 获得,并且由于我不能声明静态方法抽象,所以显而易见的选择是getAverageDifficulty直接放在我的接口中。我的问题是:将静态方法放在我的接口中是否犯了一个错误,其中包含其他Difficulty等待实现的方法?我不应该混合静态和“普通”接口抽象方法吗?我应该创建DifficultyHelper类并将我的方法放在那里吗?
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

归根结底,这是一个风格问题。但是,如果辅助类的唯一目的是保存此方法(可能还有一些类似的方法),那么您可以通过将它们放在接口中来为自己节省一个类定义:

从 Java 8 开始,接口不能包含静态方法的限制已被取消,因此通常没有什么理由为接口提供不可实例化的伴随类 [Effective Java,第 3 版]。


查看完整回答
反对 回复 2023-03-17
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

接口中的静态方法类似于默认方法,只是我们不能在实现这些接口的类中覆盖这些方法。所以在我看来,在你想要防止覆盖之前,没有必要在接口中编写静态方法。



查看完整回答
反对 回复 2023-03-17
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号