Enum-Variable HashMap zuweisen

MrMcNiki

Mitglied
Hallo,
ich versuche gerade bei einem Enum jeder Variable eine HashMap zu initialisieren. Doch irgendwie bekomme ich das nicht so wirklich hin und nach Recherche komm ich nicht weiter.
Java:
private enum Test{
    
   // hier habe ich wohl irgendeinen Murks veranstaltet
   VAR1("variable1", new HashMap<String, Integer>(), {("hallo",1)} ),
    VAR2;
    
    private String name;
    private HashMap<String, Integer> berschreibung;
    
    
    private chosenTool(String name, HashMap<String, Integer> beschreibung){
        this.name= name;
        this.beschreibung = beschreibung;
    }
}

Was muss ich tun, damit ich die HashMap z.B. bei VAR1 initialisieren kann?
Grüße

(Ich hoffe das zählt als Java-Basic, ansonsten kann ich den Post dann auch löschen und in einem anderen Unterforum stellen)
 
Hm, leider hat das irgendwie nicht ganz weiter geholfen. Ich muss die HahsMap ja irgendwie direkt beim erstellen initialisieren. Kann es sein, dass ich da was unmögliches versuche? Oder soll ich einfach den Konstruktor vom enum umschreiben, sodass ich dann dem Parameter übergebe, die dann im Konstruktor die HashMap initialisieren?
 
Ja, und? Abschnitte 3, 4 und 5 enthalten Lösungen dazu. Du kannst auch statische Methoden verwenden.
Jetzt funktioniert es mit dieser Variante, ohne dass ich da ein static voraussetzte und ich muss vor allem zweimal geschweifte Klammern nutzen:
Java:
VAR1("test", new HashMap<String, Integer>() { { put("a", 1) ; } } ),
Alle anderen Methoden von der Seite haben leider nicht geklappt, da ich beim direkten Konstruktoraufruf keine Zuweisung mit "=" machen konnte.

Ist die von mir gewählte Art und Weise in Ordnung oder kann ich durch die unkonventionelle Art von Java irgendwelche offensichtlichen Probleme bekommen?
Trotzdem nochmals danke für den Link
 
Jetzt funktioniert es mit dieser Variante, ohne dass ich da ein static voraussetzte und ich muss vor allem zweimal geschweifte Klammern nutzen:
Das Problem ist, dass Du eine HashMap erwartest (s. u.)

Ist die von mir gewählte Art und Weise in Ordnung oder kann ich durch die unkonventionelle Art von Java irgendwelche offensichtlichen Probleme bekommen?
Unkonventionell ist lediglich die von Dir gewählte Variante 🙂

Java:
import java.util.Collections;
import java.util.Map;

public enum Test{
    
    VAR1("variable1", Collections.singletonMap("hallo", 1)),
    VAR2;
    
    private String name;
    private Map<String, Integer> beschreibung;
    
    Test() {
    }

    Test(String name, Map<String, Integer> beschreibung){
        this.name= name;
        this.beschreibung = beschreibung;
    }
}
 

Neue Themen


Zurück
Oben