Bitte schauen Sie sich link. In seinem Buch Effective Java sagt Joshua BlochKann ein Enum einen Konstruktor für jede seiner Konstanten haben
Beachten Sie, dass die Operation-Konstanten in die stringToEnum-Map aus einem statischen -Block, der ausgeführt wird, nachdem die Konstanten erstellt wurden.
Versuch jede Konstante Put sich in die Karte von eigenen seiner Konstruktor einen Kompilierungsfehler
zu machen verursachen würde. Das ist eine gute Sache, weil es eine NullPointerException verursachen würde, wenn es legal wäre.
Enum Konstrukteure sind nicht die Enum statische Felder, Ausnahme Kompilierung-Konstante Felder zugreifen dürfen.
Diese Einschränkung ist notwendig da diese statische Felder noch nicht initialisiert wurde, wenn die Konstrukteure laufen.
Ich habe zwei Fragen
- Kann Aufzählungen für jede Konstante getrennte Konstrukteure haben?
- Warum sind Kompilierzeitkonstantenfelder in Konstruktoren verfügbar, aber nicht in statischen Feldern?
Dank
Können Sie Codebeispiel für diejenigen hinzufügen, die es nicht von Ihrem Link zugreifen kann? – Pshemo
@Pshemo, Yes Sir, enthält Dieser Link ganzen Artikel 30 von Joshua Blochs Buch Effective Java https://ly2xxx.wordpress.com/page/5/?app-download=ios – Ankit
Ich wollte es in Frage direkt stellen. Links neigen dazu, zu brechen, wenn es passiert, wird Ihre Frage für zukünftige Leser nutzlos sein. – Pshemo