Heim >Java >javaLernprogramm >Wie initialisiere ich statische Karten in Java: Statischer Block vs. anonyme Unterklasse?

Wie initialisiere ich statische Karten in Java: Statischer Block vs. anonyme Unterklasse?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 20:21:16637Durchsuche

How to Initialize Static Maps in Java: Static Block vs. Anonymous Subclass?

Initialisierung statischer Karten in Java

In Java können statische Karten mit zwei primären Methoden initialisiert werden:

1. Statischer Initialisierer

Diese Methode beinhaltet die Verwendung eines statischen Blocks innerhalb der Klassendeklaration, um die Karte zu initialisieren. Ein Beispiel hierfür ist im bereitgestellten Codebeispiel dargestellt:

private static final Map<Integer, String> myMap = new HashMap<>();
static {
    myMap.put(1, "one");
    myMap.put(2, "two");
}

Vorteile:

  • Einfach und unkompliziert
  • Garantiert die Initialisierung bei Klasse Laden

Nachteile:

  • Möglicherweise nicht für komplexe Initialisierungslogik geeignet

2. Instanzinitialisierer (anonyme Unterklasse)

Diese Methode verwendet eine anonyme Unterklasse, um die Karte zu initialisieren. Es ist als Instanzinitialisierer geschrieben, dient aber demselben Zweck wie die statische Initialisierung:

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

Vorteile:

  • Ermöglicht eine komplexere Initialisierungslogik
  • Erstellt eine unveränderliche Karte

Nachteile:

  • Erfordert die Erstellung einer anonymen Unterklasse
  • Wird möglicherweise nicht in allen Szenarios unterstützt (z. B. wenn die Klasse ist final)

Alternativen:

  • Unveränderliche statische Karten: Durch Initialisieren einer Karte mithilfe eines statischen Blocks und anschließendes Aufrufen von Sammlungen .unmodifiableMap(map), Sie können eine unveränderliche statische Karte erstellen.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich statische Karten in Java: Statischer Block vs. anonyme Unterklasse?. 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