static final Methoden in enum
So, ich habe sah rund um google und SO , ich kann nicht finden, ein Beispiel oder eine Erklärung : Was ist der Zweck der static
final
Methoden in enum
?
Dem, was ich verstehe :
- Methoden deklarieren
static
zugegriffen werden kann, wie die Funktion/prozedurale Sprachen. final
heißt, Sie können nicht überschreiben es. Können nicht ändern die Referenz. Als assylias darauf hingewiesen, in den Kommentarenstatic
können nicht außer Kraft gesetzt werden entweder.enum
s kann nicht sein, untergeordnet, erklärte hier.
Also, was ist der Punkt, der static
final
Methoden in enum
s, wenn es nie sein wird überschrieben, da es nicht eine Unterklasse?
- eine statische Methode kann nicht überschrieben werden, in jedem Fall...
- Statische Methoden können nicht überschrieben werden, entweder.
- assylias ich sollte hinzufügen, dass in Punkt zwei.
- Also ich denke, deine Frage ist wirklich" "gibt es irgendeine Nützlichkeit der Verwendung der
final
Modifikator auf alle enum-Methode, egal ob statisch oder nicht?" - Ja.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch eine statische Methode final, Sie verhindern, dass es verborgen werden (nur Instanz-Methoden können überschrieben werden) von einer Unterklasse.
Da enum kann nicht sein, Unterklassen, so dass eine statische Methode final ist überflüssig, aber nicht verboten.
Hinweis: technisch gesehen, jede enum-Konstante, hat einen Klasse Körper implizit definiert eine anonyme Klasse, die Sie erweitert das enum. Aber da innere Klassen dürfen nicht deklarieren von statischen Methoden, die static final-Methode kann nicht ausgeblendet werden, in solch eine Konstante ist Klasse Körper.
enum SomeEnum { VALUE1{}, VALUE2{}; }
WERT1{} anonyme KlasseSomeEnum
geben. Aber da können wir nicht hinzufügen, statische Methoden nicht-statische innere Klassen (wie anonyme Klassen) mitfinal
mitstatic
hier ist übertrieben.Es ist leicht zu sehen, warum
static
Methoden machen Sinn, ich denke also, die Frage ist, über diefinal
modifier.final
dient keinem Zweck, außer vielleicht den code ein wenig leichter zu Lesen, aber nicht viel.Es ist ähnlich wie
interface
Methoden sind oft so geschrieben, wiepublic void foo();
, obwohl-Schnittstelle-Mitglieder sind immer öffentlich sowieso.In die Java-Enum-Typen werden verwendet, um darzustellen festen Satz von Konstanten und das es static final hilft Ihrer Initialisierung nur einmal, eine einzige Kopie freigegeben werden über alle Instanzen, Zugriff auf die variable mit den Namen der Klasse und mit der definitiven seine mehr wie ein nur-lese -
Wenn Sie deklarieren, die Instanzen von enum können Sie überschreiben die enum-Methoden, die im wesentlichen der enum-Instanzen implementiert werden, wie (oder gedacht) als Unterklassen.
static
Methoden können nicht überschrieben werden, in jedem Fall aber die Auswirkungen der OP und die anderen Antworten, dassfinal
ist überflüssig für eineenum
ist falsch.