良いか悪い習慣と考え抽象クラスの静的メソッドを公開しています

robbie70:

私は最近、いくつかのコードに出くわした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));

    }
}

あなたがコードを実行すると、あなたは結果を得る5私は、コード内で実行することができたことを証明しているabstractクラスを。

私は意図的に添加さていませんでしたextendsStaticMethodsInClassesStudy、それは内部のコードを直接実行することは完全に可能だという点を強調するためにabstract拡張クラスをインスタンス化せずにクラスを。

個人的に私はあなたが使用しているので、これは悪い習慣であると考えているだろうabstract、通常のクラスとしてクラスをし、それによってバイパス意思abstractクラスを。方法のこれらの種類は、別の「通常」のJavaクラスなどのユーティリティクラスに保管すべきではありませんか?

JB Nizet:

これは、抽象クラスは実際にサブクラス化されることを意味しない場合を除き、それ自体は悪い習慣はありません、と抽象的インスタンス化を防ぐためにだけ存在しています。唯一の静的なユーティリティを提供するクラスのためのベストプラクティスは、それが最終的にするために、プライベートコンストラクタを持っているだろう。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=312281&siteId=1