ホームページ >Java >&#&チュートリアル >なぜ Java では定数インターフェイスを避けるべきなのでしょうか?

なぜ Java では定数インターフェイスを避けるべきなのでしょうか?

DDD
DDDオリジナル
2024-11-05 05:47:02336ブラウズ

Why Should Constant Interfaces Be Avoided in Java?

インターフェイス定数の不可解な目的

Java では、インターフェイス内でフィールドを宣言して、フィールドを暗黙的にパブリック、静的、およびフィールドにすることができます。ファイナル。これは開発者の間で疑問を引き起こしました。

定数インターフェイスの罠

予想に反して、インターフェイス内で定数を定義することは「定数インターフェイス アンチパターン」とみなされます。 Joshua Bloch の『Effective Java』で述べられているように、この手法では実装の詳細が不必要にユーザーに公開され、将来のコード変更が妨げられます。さらに、サブクラスを定数インターフェイスにバインドします。

プラットフォームの異常

この警告にもかかわらず、Java などの Java 標準ライブラリにはいくつかの定数インターフェイスが存在します。 io.ObjectStreamConstants.これらの奇妙な点は例としてではなく、避けるべき対比として機能する必要があります。

代替アプローチ

定数インターフェイスに関連する落とし穴を防ぐには、次のような専用のユーティリティ クラスを使用することを検討してください。

<code class="java">public final class Constants {

    private Constants() {}

    public static final double PI = 3.14159;
    public static final double PLANCK_CONSTANT = 6.62606896e-34;
}</code>

このアプローチでは、定数をプライベートに保ちながら、静的インポートを通じて簡単にアクセスできます。

<code class="java">import static Constants.PLANCK_CONSTANT;
import static Constants.PI;

public class Calculations {

    public double getReducedPlanckConstant() {
        return PLANCK_CONSTANT / (2 * PI);
    }
}</code>

したがって、インターフェイス定数は興味深いように思えるかもしれませんが、避けるべきです。潜在的な設計上の欠陥のため。クリーンで柔軟なコードベースを維持するには、代わりに静的なファイナルを含むプライベート クラスを使用してください。

以上がなぜ Java では定数インターフェイスを避けるべきなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。