假设我在类getAverageDifficulty
中有一个方法Difficulty
像这样:
public static Float getAverageDifficulty (List<Difficulty> difficultyList) {
...
return average;
}
我的方法显然需要是静态的,因为不需要Difficulty
的实例是没有意义的。现在让我们说我正在使用接口IDifficulty
,以便稍后可以更改实现。显然,我确实希望getAverageDifficulty
可以使用我的IDifficulty
方法,并且由于我无法声明静态方法摘要,因此显而易见的选择是将getAverageDifficulty
直接放在我的界面中。我的问题是:将静态方法放入接口中是否会出错,该接口包含等待执行的其他Difficulty
方法?我不应该混合使用静态和“普通”接口抽象方法吗?我应该创建DifficultyHelper
类并将其方法放在那里吗?
答案 0 :(得分:3)
最终,这是一个风格问题。但是,如果帮助器类的唯一目的是保留此方法(可能还有一些类似的方法),则可以通过将它们放在接口中来保存自己的一个类定义:
从Java 8开始,消除了接口不能包含静态方法的限制,因此通常没有理由为接口提供不可实例化的伴随类[Effective Java,第3版]。
答案 1 :(得分:0)
接口中的静态方法与默认方法类似,不同之处在于我们无法在实现这些接口的类中覆盖这些方法。因此,我认为不必在接口中编写静态方法,除非您想防止覆盖。 / p>