Ich möchte ein IdentityHashMap<Class<T>, Consumer<T>>
erstellen. Grundsätzlich möchte ich einen Typ mit einer Methode zuordnen, die besagt, was mit diesem Typ zu tun ist.Verbraucher <T> gemappt Klasse <T> in HashMap
Ich möchte dynamisch der Lage sein, mit Objekten X zu sagen, führen Y. I
private IdentityHashMap<Class<?>, Consumer<?>> interceptor = new IdentityHashMap<>();
tun können, aber es saugt, weil dann muss ich das Objekt in der lamba werfen, wenn es zu benutzen.
Beispiel:
interceptor.put(Train.class, train -> {
System.out.println(((Train)train).getSpeed());
});
Was Ich mag würde zu tun ist,
private <T> IdentityHashMap<Class<T>, Consumer<T>> interceptor = new IdentityHashMap<>();
Aber es scheint nicht erlaubt zu werden. Gibt es eine Möglichkeit, dies zu tun? Was ist die beste Problemumgehung, um Typen mit einer Methode für diesen Typ zuzuordnen?
Dies ist ein Seitenlicht Beachten Sie jedoch, dass 'java.lang.Class' Gleichheit als Identität definiert. Daher ist es nicht notwendig,' IdentityHashMap' zu verwenden. – ruakh
@ruakh Es ist auch nicht notwendig, 'HashMap' zu verwenden. Was würde es bringen, wenn man beim Vergleich zwei zusätzliche "Gleich" -Aufrufe hat? – Winter
Siehe http://docs.oracle.com/javase/8/docs/api/java/util/IdentityHashMap.html. Sie sollten 'IdentityHashMap' nur verwenden, wenn Sie es benötigen. – ruakh