Heim >Java >javaLernprogramm >So initialisieren Sie eine statische Karte in Java: Statische Initialisierer vs. Instanzinitialisierer?

So initialisieren Sie eine statische Karte in Java: Statische Initialisierer vs. Instanzinitialisierer?

DDD
DDDOriginal
2024-12-03 12:08:16548Durchsuche

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

Initialisierung einer statischen Karte in Java

Die Initialisierung einer statischen Karte in Java umfasst zwei Hauptansätze: statische Initialisierer und Instanzinitialisierer.

Statische Initialisierer:

Statisch Mit Initialisierern können Sie die Karte direkt innerhalb der Klassendefinition initialisieren. Dies wird mithilfe eines statischen Blocks erreicht, wie im folgenden Beispiel gezeigt:

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

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

Vorteile:

  • Prägnante Syntax
  • Initialisierung erfolgt zum Zeitpunkt des Ladens der Klasse
  • Die Karte ist endgültig und kann nicht einmal geändert werden eingestellt

Nachteile:

  • Nicht für unveränderliche Karten geeignet
  • Kann schwer zu lesen und zu warten sein

Instanzinitialisierer (Anonym Unterklasse):

Instanzinitialisierer bieten eine alternative Syntax zum Initialisieren statischer Mitglieder. Dieser Ansatz verwendet eine anonyme Unterklasse, die den Standardkonstruktor überschreibt:

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

Vorteile:

  • Syntaktischer Zucker für statische Initialisierer
  • Kann verwendet werden, um Unveränderlichkeit zu schaffen Karten

Nachteile:

  • Erfordert einen zusätzlichen anonymen Kurs
  • Nicht kompatibel mit Abschlusskursen

Zusätzliche Hinweise:

  • Die Instanz Der Initialisierungsansatz gilt als syntaktischer Zucker für statische Initialisierer.
  • Unveränderliche Karten können mit einem statischen Initialisierer erstellt werden, indem zunächst eine veränderbare Karte erstellt und diese dann mit der Methode Collections.unmodifiableMap() unveränderbar gemacht wird.

Das obige ist der detaillierte Inhalt vonSo initialisieren Sie eine statische Karte in Java: Statische Initialisierer vs. Instanzinitialisierer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn