Hallo zusammen
Ich habe ein Problem mit einem Generic einer HashMap.
Ich habe eine HashMap<String, Object> die als Symboltabelle eines Parsers dient (variables im Code), also variablen "speichert". Dies können verschiedene Typen sein, deshalb <Object>.
Wenn ich nun ein Integer oder ein Double speichere und dieses später wieder über get aus der Liste hole
kann ich
fragen ob es sich um einen Integer bzw. Double usw. handelt und kann dann entsprechend handeln (siehe Code).
stack ist eine ArrayList die als Stack dient (wie der Name schon sagt
) und verschiedene Objekttypen enthalten kann. (auch <Object> Generic).
Meine erste Frage ist nun:
Weiss jemand eine bessere Lösung um die Typen herauszufinden oder auch um die variablen in die Hashmap zu speichern (vgl.
z.B.)
Meine 2. Frage ist:
Wenn ich in die HashMap eine ArrayList mit bestimmtem Generic z.B. Integer speichere wie kann ich dort den Typ (inklusive Generic) abfragen, denn mit .getClass().toString() bekomme ich ja den Generic nicht?
Vielen Dank für jede Hilfe.
Ich habe ein Problem mit einem Generic einer HashMap.
Ich habe eine HashMap<String, Object> die als Symboltabelle eines Parsers dient (variables im Code), also variablen "speichert". Dies können verschiedene Typen sein, deshalb <Object>.
Wenn ich nun ein Integer oder ein Double speichere und dieses später wieder über get aus der Liste hole
kann ich
Java:
.getClass().toString().contains("Integer");
Java:
String s = stack.get(stack.size()-1).getClass().toString();
if(s.contains("Integer") && variables.get(name).getClass().toString().contains("Integer")) variables.put(name, new Integer(stack.get(stack.size()-1).toString()));
else if(s.contains("Double") && variables.get(name).getClass().toString().contains("Double")) variables.put(name, new Double(stack.get(stack.size()-1).toString()));
else if(s.contains("Boolean") && variables.get(name).getClass().toString().contains("Boolean")) variables.put(name, new Boolean(stack.get(stack.size()-1).toString()));
else if(s.contains("String") && variables.get(name).getClass().toString().contains("String")) variables.put(name, stack.get(stack.size()-1).toString());
else {
error("ERROR: Couldn't save variable with different type");
}
stack ist eine ArrayList die als Stack dient (wie der Name schon sagt
Meine erste Frage ist nun:
Weiss jemand eine bessere Lösung um die Typen herauszufinden oder auch um die variablen in die Hashmap zu speichern (vgl.
Java:
... new Integer(stack.get(stack.size()-1).toString))
Meine 2. Frage ist:
Wenn ich in die HashMap eine ArrayList mit bestimmtem Generic z.B. Integer speichere wie kann ich dort den Typ (inklusive Generic) abfragen, denn mit .getClass().toString() bekomme ich ja den Generic nicht?
Vielen Dank für jede Hilfe.