繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM