ホームページ >Java >&#&チュートリアル >Java で静的マップを初期化する方法: 静的初期化子とインスタンス初期化子?

Java で静的マップを初期化する方法: 静的初期化子とインスタンス初期化子?

DDD
DDDオリジナル
2024-12-03 12:08:16552ブラウズ

How to Initialize a Static Map in Java: Static Initializers vs. Instance Initializers?

Java での静的マップの初期化

Java での静的マップの初期化には、静的初期化子とインスタンス初期化子という 2 つの主なアプローチが必要です。

静的イニシャライザ:

静的イニシャライザを使用すると、クラス定義内でマップを直接初期化できます。これは、次の例に示すように、静的ブロックを使用して実現されます。

public class Test {
    private static final Map<Integer, String> myMap = new HashMap<>();

    static {
        myMap.put(1, "one");
        myMap.put(2, "two");
    }
}

長所:

  • 簡潔な構文
  • 初期化クラスのロード時に発生します
  • マップは最終的なものであり、一度変更することはできませんset

短所:

  • 不変マップには適さない
  • 読み取りと保守が困難になる可能性がある

インスタンス初期化子 (匿名)サブクラス):

インスタンス初期化子は、静的メンバーを初期化するための代替構文を提供します。このアプローチでは、デフォルトのコンストラクターをオーバーライドする匿名サブクラスを使用します。

public class Test {
    private static final Map<Integer, String> myMap2 = new HashMap<>() {
        {
            put(1, "one");
            put(2, "two");
        }
    };
}

長所:

  • 静的初期化子用の糖衣構文
  • Can不変を作成するために使用されますマップ

短所:

  • 追加の匿名クラスが必要
  • 最終クラスと互換性がない

追加注:

  • インスタンス初期化子のアプローチは、静的初期化子の構文糖とみなされます。
  • 不変マップは、最初に可変マップを作成し、次に静的初期化子を使用して作成できます。 Collections.unmodifiableMap() を使用して変更できないようにするメソッド。

以上がJava で静的マップを初期化する方法: 静的初期化子とインスタンス初期化子?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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