2 Stimmen

Warum ist die Entry-Klasse in HashMap in Java statisch?

Heute, als ich den Quellcode der HashMap-Klasse in Java ansah, sah ich, dass die Entry-Klasse in HashMap, die verwendet wird, um das Schlüssel-Wert-Paar aufzuzeichnen, statisch ist.

 static class Entry implements Map.Entry {

}

Soweit ich weiß, hat ein statisches Element der Klassen nur einen Wert für alle Instanzen der Klasse. Wie sich dieses Phänomen auf statische verschachtelte Klassen anwendet, konnte ich auch nach einigen Diskussionen auf StackOverFlow nicht genau herausfinden. Hier ist der Link zu einigen Erklärungen, warum die Entry-Klasse statisch ist.

Statische verschachtelte Klasse in Java, warum?

2voto

user207421 Punkte 297318

Soweit ich weiß, haben statische Elemente der Klassen nur einen Wert für alle Instanzen der Klasse.

Richtig.

Wie trifft dieses Phänomen auf statische verschachtelte Klassen zu?

Nicht. Eine statische verschachtelte Klasse hat kein impliziertes umgebendes Objekt, daher kann sie nicht auf die nicht-statischen Elemente der umgebenden Klasse zugreifen.

Der von Ihnen gepostete Link enthält mehrere Antworten, die alle dasselbe sagen wie oben.

1voto

telkins Punkte 10300

Es ist wirklich nur für organisatorische Zwecke. Eine statische verschachtelte Klasse verhält sich wie eine Top-Level-Klasse in einem Paket. In diesem Fall ist die Entry-Klasse direkt mit HashMap verknüpft, daher macht es Sinn, sie zu verschachteln und nicht das Hauptpaket zu verschmutzen.

Ich würde empfehlen, das Oracle-Tutorial zu lesen: http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X