Gibt es eine Möglichkeit, eine Aufzählung zu schreiben, die erweitert werden kann? Ich habe mehrere Methoden, die ich immer für meine Aufzählungen verfügbar haben möchte. Zum Beispiel verwende ich eine Aufzählung für meine Datenbankfelder. Ich füge den tatsächlichen Feldnamen in die Datenbank ein.
%Vor%Wenn ich richtig verstehe, was Sie tun möchten, ist etwas wie folgt:
%Vor%Definieren Sie dann Ihre Enum, um diese Klasse zu erweitern. Leider kann ein enum eine Klasse nicht erweitern, aber es kann eine Schnittstelle implementieren, also das Beste, was Sie im Moment tun können, definieren Sie eine Schnittstelle, die die Methode getFieldName () enthält und alle Ihre Enums implementieren diese Schnittstelle.
Dies bedeutet jedoch, dass Sie die Implementierung dieser Methode (und anderer) in allen Ihren enums duplizieren müssen. Es gibt einige Vorschläge in diese Frage zu Möglichkeiten, diese Duplizierung zu minimieren.
Alle enums erweitern implizit java.lang.Enum
. Da Java keine Mehrfachvererbung unterstützt, kann eine Enumeration nichts anderes erweitern.
Enums können Schnittstellen implementieren, aber nicht erweitern, da sie bei der Kompilierung in java.lang.Enum übersetzt werden.
Für einen Rückblick auf die 5 Tage vor Java schauen Sie sich Punkt 21, Kapitel 5, Effektives Java von Josh Bloch . Er spricht davon, "Enums" durch Hinzufügen von Werten zu erweitern, aber vielleicht könnten Sie einige der Techniken verwenden, um eine neue Methode hinzuzufügen?
Erstelle das Enum in einem Mechanismus, der dem in Josh Blochs Effektivem Java definierten ähnelt.
Ich würde hinzufügen, dass, wenn Sie das enum "erweitern" müssen, dann ist vielleicht ein enum nicht das Konstrukt, nach dem Sie suchen. Sie sollen statische Konstanten IMHO sein.
Tags und Links java enumeration design-patterns enums