在抽象类中公开静态方法被认为是好还是坏实践

rob*_*e70 5 java

我最近遇到一些代码,其中在类public static中定义了方法abstract。我想知道这是否被认为是好的做法还是反模式?

我制作了一个简单的示例程序来说明我的意思。

public abstract class StaticMethodsInAbstractClassesStudy {

    public static int adder(int a, int b){
        return a + b;
    }

}

public class StaticMethodsInClassesStudy {

    public static void main(String [] args){

        System.out.println(StaticMethodsInAbstractClassesStudy.adder(2, 3));

    }
}
Run Code Online (Sandbox Code Playgroud)

当您运行代码时,您会得到结果,5证明我能够在abstract类内部运行代码。

我故意不添加extendsStaticMethodsInClassesStudy强调这一点,即完全可以在类中直接运行代码abstract而无需实例化扩展类。

就我个人而言,我认为这是不好的做法,因为您将abstract类用作普通类,从而绕过了类的意图abstract。这些类型的方法不应该保存在单独的“普通”java 类中,例如实用程序类吗?

JB *_*zet 2

这本身并不是一个坏习惯,除非抽象类实际上并不意味着要被子类化,并且抽象只是为了防止实例化。对于仅提供静态实用程序的类,最佳实践是将其设为最终的,并具有私有构造函数。