Java の Enum シングルトン: インスタンス メソッドと静的メソッド - 違いは何ですか?

Patricia Arquette
リリース: 2024-11-04 03:41:30
オリジナル
493 人が閲覧しました

Enum Singleton in Java: Instance Method vs. Static Method - What's the Difference?

Java で Enum を使用した単一インスタンスの実装: 違いを理解する

シングルトン パターンでは、クラスの単一インスタンスのみが作成されることが保証されます。 Java でシングルトンを実装するための 1 つのアプローチは、列挙型を利用することです。ただし、このアプローチにはバリエーションがあり、その違いやメリットについて疑問が生じます。

説明した 2 つのシナリオを見てみましょう:

シナリオ 1: インスタンス メソッドの使用

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}</code>
ログイン後にコピー

この場合、次のようにインスタンスとそのメソッドにアクセスできます:

<code class="java">Elvis.INSTANCE.getAge();</code>
ログイン後にコピー

シナリオ 2: 静的メソッドの使用

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}</code>
ログイン後にコピー

ここでは、静的メソッドを通じてインスタンスのプロパティにアクセスできます:

<code class="java">Elvis.getAge();</code>
ログイン後にコピー

相違点と考慮事項:

  • インスタンスバインディング: シナリオ 1 では、インスタンス (Elvis.INSTANCE) への直接バインドが可能です。これは、オブジェクトのプロパティが必要な場合に便利です。一方、シナリオ 2 では、静的メソッドへのバインディングが制限されます。
  • プロパティ アクセシビリティ: バインディング ターゲットがクラス プロパティを検索する場合、シナリオ 1 で Elvis.class を使用してもプロパティは見つかりません。明示的にコーディングされていない限り。ただし、シナリオ 2 では、静的メソッドを通じてプロパティにアクセスできることが保証されます。

アプローチの選択:

最終的に、シナリオの選択はユーザーの状況によって異なります。特定のニーズ:

  • インスタンスが必要で、プロパティを変更またはアクセスする必要がある場合は、シナリオ 1 の方が適切です。
  • 静的メソッドのみで十分な場合は、シナリオ 2 がより単純で、より直接的なオプション。インスタンスの作成が必要ない、または望ましくない場合には、このアプローチが推奨されます。

以上がJava の Enum シングルトン: インスタンス メソッドと静的メソッド - 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート