Enums zum ersten mal

M

Mart

Gast
Java:
enum Switcher{
    NEXT,PREVIOUS;
    private static LinkedList<ViewWithTopbar> list;
    private static Iterator<LinkedList<ViewWithTopbar>> iterator;
    public static final void addToList(ViewWithTopbar view) {
        list.add(view);
    }
    Switcher() {
        
    }
    public static final void switchTo(Switcher direction) {
        if(direction == Switcher.NEXT) {
            //
        }
        else if ( direction == Switcher.PREVIOUS) {
            //
        }
    }
}
also ich versuche mit dem enum das children von der Scene durchzuwechseln und dynamisch neue ansichten hinnzuzufügen nur

ich habe keinen Plan ob man die switchTo methode so benutzen sollte da ja das static nicht benutzt werden sollte ???

wie umgehe ich denn die static linked List und den Iterator
 
K

kneitzel

Gast
Also das Enum mit der Direction sehe ich ja noch, aber wie kommst Du darauf, dass die Listen da mit rein gehören würden? Was hat das mit der Direction zu tun?

Da kannst Du eine eigene Klasse machen. Von der Klasse kannst Du dann eine Instanz erzeugen und schon hast Du gar kein static mehr!
 

Oneixee5

Top Contributor
Ein enum ist nicht wie eine Klasse zu handhaben, obwohl es ein paar Möglichkeiten gibt. Enum ist eher eine Aufzählung bestimmter möglicher Attribute um aus dem Konstanten-Dilemma rauszukommen.
 
M

Mart

Gast
mnja da bin ich auf dem schlauch gestanden

hab den wald vor lauter bäumen nicht gesehen, ist tatsächlich logischer das zu machen wie kneitzel es gesagt hat


ist das mit den IFs so normal oder gibts da eine bessere möglichkeit?
 

Oneixee5

Top Contributor
Switcher bietet nur 2 Möglichkeiten somit ist das else if irgendwie sinnlos:
Java:
if(direction == Switcher.NEXT) {
       
} else  {
       
}
Eine boolean.Variable würde es auch tun.
 
M

Mart

Gast
es sollten noch andere dazu kommen wie zb DEEPER da eine ViewWithTopBar mehrere ViewWithTopbars haben kann
 

mrBrown

Super-Moderator
Mitarbeiter
ist das mit den IFs so normal oder gibts da eine bessere möglichkeit?
Enums können ganz normale Methoden haben, die für jeden Wert überschrieben werden können. Je nachdem, was man machen will, kann das sinnvoller sein.

Eine boolean.Variable würde es auch tun.
Selbst wenn es nur zwei sind ist ein Enum aber meist schon schöner, allein schon weil dann was explizites da steht und nicht nur True/False
 
K

kneitzel

Gast
Ist das ein Witz?
Nein, denn es ist eben eine Enum und kein boolean.

Und damit hat man auch 3 Möglichkeiten:
Die beiden Enum-Werte und null.

Und eine Enum kann leicht erweitert werden - und wenn man dann den neuen Wert an so einer Stelle vergisst einzupflegen, dann fällt das hinterher nicht auf. Daher ist ein default Zweig mit werfen einer RuntimeException auf jeden Fall etwas, das ich machen würde.
 
K

kneitzel

Gast
Der TE hat keinen Zweig für null vorgesehen. Aber egal, das enum soll sowieso erweitert werden.
Ja, aber das spielt keine Rolle. Er hat da halt Code, der generell sehr ... sagen wir mal seltsam ... ist. Wir können nur die generelle Vorgehensweise ansprechen. Da gibt es kein wirkliches richtig / falsch - aber halt ein Weg, den ich einschlagen würde (incl. kleiner Begründung, die ich ja versucht habe).

Und dieser Code wäre tatsächlich mit ifs bei mir eine Kette von mehreren if / else if und im letzten else das Werfen einer Exception.
Und das wären dann tatsächlich 3 Werte + die Exception. Wobei das null vermutlich schon bei der Validierung abgefrühstückt worden wäre in Form eine NPE oder so.
 

Neumi5694

Top Contributor
Außerdem helfen einem die neuen Rule-Switches dabei, dass man beim späteren Hinzufügen von Werten die Auswertung derselben nicht übersieht, ohne "default" kompiliert der Code dann schlicht und einfach nicht, wenn nicht alle Fälle abgedeckt sind.
Seit der Einführung hab ich rule-switches mit Rückgabewert echt zu schätzen gelernt, warte nur noch darauf, dass "case null" freigegeben wird.
 
M

Mart

Gast
Außerdem helfen einem die neuen Rule-Switches dabei, dass man beim späteren Hinzufügen von Werten die Auswertung derselben nicht übersieht, ohne "default" kompiliert der Code dann schlicht und einfach nicht, wenn nicht alle Fälle abgedeckt sind.
Seit der Einführung hab ich rule-switches mit Rückgabewert echt zu schätzen gelernt, warte nur noch darauf, dass "case null" freigegeben wird.
mit den java 17 switches gibts case null sogar https://www.javacodegeeks.com/2021/09/java-17-pattern-matching-for-switch.html
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
C Enums und Vererbung Allgemeine Java-Themen 6
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
D Enums subclassen / erweitern? Allgemeine Java-Themen 2
B Vererbung bei enums ? Allgemeine Java-Themen 3
GilbertGrape Eine Art Basisklasse für Enums Allgemeine Java-Themen 9
G Typensicherheit bei enums Allgemeine Java-Themen 4
T enums - eigener startwert Allgemeine Java-Themen 5
V Enums aus Datei-Einträgen erzeugen? Allgemeine Java-Themen 6
S Methode die Enums verarbeiten kann? Allgemeine Java-Themen 2
F Frage zu switch und enums Allgemeine Java-Themen 5
B Enums hinzufügen Allgemeine Java-Themen 6
M enums ineinander schachteln Allgemeine Java-Themen 10
S Enums - statischer import Allgemeine Java-Themen 2
looparda Stream mit Sonderbehandlung des ersten Elements Allgemeine Java-Themen 17
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
B ZIP - Problem mit dem ersten Ordner Allgemeine Java-Themen 2
K ersten programmstart erkennen Allgemeine Java-Themen 7
D Datei beim ersten Programmstart anlegen? Allgemeine Java-Themen 3
thE_29 Vor dem ersten Posten bitte lesen! Allgemeine Java-Themen 0
G Zweites Java-Programm im ersten aufrufen?!? Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben