Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine Liste von Suchkriterien welche enums sind(also id, name, city).
In einer Combobox möchte ich die in deutsch anzeigen und habe mir deswegen eine Methode geschrieben. welche eine variable searchCriteria bekommt und einen String mit der deutschen Bezeichnung zurückgibt. Die schreibe ich dann in die Liste. das funzt auch ganz gut. Jetzt brauch ich allerding auch den ausgewählten Wert wieder zurück als enum. Nur kann ich ja in einer switch case Abfrage keinen string abgeben und eine if schleife mit 8 pfaden finde ich auch nicht so besonders. elche Möglichkeit gibt es noch das prolem zu lösen also das umwandeln von enum in String und wieder zurück.
An der enum Klasse kann aber nix verändert werden.
dafür brauchst du eine Map, die von String auf Enum abbildet,
falls der String = Enum.toString() ist, dann nimm die vorgegebe Operation
DeineEnum e = DeineEnum.valueOf(string);
falls du einen anderen String hast kannst du entweder den als toString() ausgeben (toString() überschreiben)
oder musst eine eigene Hilfsstruktur wie eine HashMap aufbauen
Hallo
@Gast das es keine If-Schleifen, sondern nur Verzweigungen gibt weiß ich.
@Slater also das mit der toString Methode geht nicht, weil die enum Klasse nur die suchkriterein enthält, also, id, name, city usw.
Wenn ich das ganze in eine Map packe. und den enum als Schlüßel und die dt. Bezeichnung als Wert. kann ich ja einfach auf den wert zugreifen.
Aber wie komme ich dann vom Wert wieder an den Schlüßel?
nur indem du eine Map Wert (String)->Enum anlegst,
wie machst du es denn bisher manuell?
falls du einen Teilspring ausliest (in den ersten 20 Zeichen stehen die allgmeinen Suchkriterien),
dann bezieht sich das ganze Konzept natürlich nur auf diesen Teilstring
Die Frage "Warum???" erspare ich dir jetzt mal, mache dir aber ein bißchen den Mund wässerig (so, dass du sie vielleicht DOCH änderst) : Wenn du bei denen enums die toString-Methode vernünftig überschreibst, kannst du sie direkt in die ComboBox packen - und bei getSelectedItem bekommst du dann das enum-Objekt zurück. Sehr praktisch.
Hallo, ja das Problem ist, ich greife auf die enum Klasse aber nur zu. Die ist aber nicht von mir, deswegen kann ich sie nicht ändern. ich weiß das das einfacher wäre. Wie gehts denn mit der map?
@Slater
Also bisher habe ich halt nur die Methode getStringForValue(enum search) in der frage ich in einer switch case Abfrage ab, welches enum und gebe dann den String zurück. Nur geht das ja wie gesagt nur in die eine Richtung.
Und wenn ich eine map nehme. kann ich ja eigentlich auch immer nur in eine richtung abfragen also die richtung welche Schlüßel ist.
Es ist kein Teilstring, also ein enum z.b city steht für die bezeichnung stadt.
> in der frage ich in einer switch case Abfrage ab, welches enum und gebe dann den String zurück. Nur geht das ja wie gesagt nur in die eine Richtung.
um den Rückweg zu bestimmen ist es essentiell zu wissen, wie dieser String aufgebaut ist, was davon aus der Enum kommt usw.,
ohne Beispiele geht es nicht voran
> Was meinst du mit ?
ganz allgemein ohne besondere Ausnutzug sieht es so aus:
du hast bisher z.B.
Code:
for (Ergebnisse/ Auswahlmöglichkeiten) {
Enum x = ..;
String dazu = getStringForValue(x);
füge in Combobox ein usw
}
später:
String y = get aus Combobox;
Enum dazu = ??? // Problem
mit Map sieht es dagegen so aus:
Code:
for (Ergebnisse/ Auswahlmöglichkeiten) {
Enum x = ..;
String dazu = getStringForValue(x);
füge in Combobox ein usw
hashmap.put(dazu,x); // gespeichert: String dazu mappt auf Enum x
}
später:
String y = get aus Combobox;
Enum dazu = map.get(y);