Ich bin auf der Suche nach einer Möglichkeit, eine HashMap zu erstellen, die auf gemischte Typen abbildet.
Zum Beispiel würde das folgende in Python funktionieren (beachten Sie, dass ein Python dict
ist vergleichbar mit einer Java HashMap
):
d = dict()
d["str"] = "This is a string"
d["flt"] = 1.23
d["int"] = 5
und beim Zugriff auf d[x]
wird der entsprechende Typ zurückgegeben (in diesem Beispiel string, float, int).
In Java könnte ich mit einer HashMap<String, Object>
aber ich habe nicht wirklich eine Möglichkeit, sofort zu erkennen, um welchen Typ es sich bei den einzelnen Objekten handelt.
Stattdessen versuche ich derzeit, eine MixedType
Klasse, die ein Objekt enthält, aber auch seine ursprüngliche Typinformation, so dass ich es später downcasten kann. Zum Beispiel:
public class MixedMap
public static class MixedType
{
public Class<?> cls;
public Object val;
public MixedType(Class<?> c, Object v)
{
this.cls = c;
this.val = v;
}
}
public static void main(String args[])
{
MixedType m1 = new MixedType(String.class, "This is a String");
System.out.println((m1.cls)m1.val);
}
}
Bitte beachten Sie, dass dies das ist, was ich Versuch zu tun :-) da es derzeit nicht kompiliert und sich darüber beschwert, dass m1 cannot be resolved to a type
.
Meine Frage ist also: Wie kann ich das beheben? Andere Möglichkeiten, um das gleiche Ziel zu erreichen, wäre willkommen, aber bitte antworten Sie nicht sagen mir, dass dies die Typüberprüfung Fähigkeit des Compilers begrenzt - ich weiß, dass und bin OK mit ihm.
Vielen Dank im Voraus.