Nicht sicher, ob das überhaupt möglich ist; Ich gebe zu, ich bin nicht so gut in Generika, wie ich gerne wäre.Java 8 generische Karte der Funktionen
Grundsätzlich möchte ich eine Karte von Klasse erstellen -> Funktion wo die Klasse für den Schlüssel verwendet wird, ist die Klasse der Eingabe in die Funktion, wie solche (nicht legal Syntax):
public static Map<Class<T>,Function<T,Expression>> STUFF = new HashMap<>();
{
STUFF.put(List.class, ListExpression::new);
STUFF.put(String.class, StringExpression::new);// this constructor must take string
}
so dass, wenn ich das tue:
Function<String,Expression> e = STUFF.get(o.getClass());
Expression ex = e.apply(o);
Es bekommt die Typen richtig für mich.
Mögliche Duplikat http://stackoverflow.com/questions/10194855/java-map-key-class-value-instance-of-that-class –
Ich glaube, Sie brauchen Übernehmen Sie 'Put' in HashMap, um das zu tun. – njzk2