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

假设getAverageDifficulty我的班级中有一个方法Difficulty是这样的:

public static Float getAverageDifficulty (List<Difficulty> difficultyList) {

    ... 
       return average;

}

我的方法显然需要是静态的,因为要求Difficulty. 现在假设我正在使用一个接口,IDifficulty这样我可以稍后更改我的实现。显然,我确实希望我的getAverageDifficulty方法可以从IDifficulty, 获得,并且由于我不能声明静态方法抽象,所以显而易见的选择是getAverageDifficulty直接放在我的接口中。我的问题是:将静态方法放在我的接口中是否犯了一个错误,其中包含其他Difficulty等待实现的方法?我不应该混合静态和“普通”接口抽象方法吗?我应该创建DifficultyHelper类并将我的方法放在那里吗?


慕标琳琳
浏览 135回答 2
2回答

狐的传说

归根结底,这是一个风格问题。但是,如果辅助类的唯一目的是保存此方法(可能还有一些类似的方法),那么您可以通过将它们放在接口中来为自己节省一个类定义:从 Java 8 开始,接口不能包含静态方法的限制已被取消,因此通常没有什么理由为接口提供不可实例化的伴随类 [Effective Java,第 3 版]。

繁星淼淼

接口中的静态方法类似于默认方法,只是我们不能在实现这些接口的类中覆盖这些方法。所以在我看来,在你想要防止覆盖之前,没有必要在接口中编写静态方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java