[英]Is putting static methods in interfaces a good practice?
假设我在类Difficulty
中有一个方法getAverageDifficulty
如下:
public static Float getAverageDifficulty (List<Difficulty> difficultyList) {
...
return average;
}
我的方法显然需要是静态的,因为不需要Difficulty
实例是没有意义的。 现在让我们说我正在使用接口IDifficulty
以便以后可以更改实现。 很显然,我不希望我的getAverageDifficulty
方法可从IDifficulty
,正如我不能宣布一个静态方法抽象的,显而易见的选择是把getAverageDifficulty
直接在我的接口。 我的问题是:将静态方法放入我的界面(其中包含等待执行的其他Difficulty
方法)是否会出错? 我不应该混合使用静态和“普通”接口抽象方法吗? 我应该创建DifficultyHelper
类并将方法放在那里吗?
最终,这是一个风格问题。 但是,如果帮助器类的唯一目的是保留此方法(可能还有一些类似的方法),则可以通过将它们放在接口中来保存自己的一个类定义:
从Java 8开始,消除了接口不能包含静态方法的限制,因此通常没有理由为接口提供不可实例化的伴随类[Effective Java,第3版]。
接口中的静态方法与默认方法类似,不同之处在于我们无法在实现这些接口的类中覆盖这些方法。因此,我认为不必在接口中编写静态方法,除非您想防止覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.