Je souhaite créer un IdentityHashMap<Class<T>, Consumer<T>>
. Fondamentalement, je veux mapper un type avec une méthode indiquant quoi faire avec ce type.Consommateur <T> mappé Classe <T> dans HashMap
Je veux dynamiquement pouvoir dire avec des objets X, exécutez Y. Je peux faire
private IdentityHashMap<Class<?>, Consumer<?>> interceptor = new IdentityHashMap<>();
mais il suce parce que je dois jeter l'objet dans le lamba lorsque vous l'utilisez.
Exemple:
interceptor.put(Train.class, train -> {
System.out.println(((Train)train).getSpeed());
});
Ce que je voudrais faire est
private <T> IdentityHashMap<Class<T>, Consumer<T>> interceptor = new IdentityHashMap<>();
Mais il ne semble pas être autorisé. Y a-t-il un moyen de faire cela ? Quelle est la meilleure solution pour mapper les types avec une méthode pour ce type?
C'est un feu de position , mais notez que 'java.lang.Class' définit l'égalité en tant qu'identité, il n'est donc pas nécessaire d'utiliser' IdentityHashMap' ici. – ruakh
@ruakh Il n'est pas non plus nécessaire d'utiliser 'HashMap'. Qu'est-ce que cela apporterait à avoir 2 appels supplémentaires «égaux» lors de la comparaison? – Winter
Veuillez consulter http://docs.oracle.com/javase/8/docs/api/java/util/IdentityHashMap.html. Vous ne devez utiliser 'IdentityHashMap' que lorsque vous en avez spécifiquement besoin. – ruakh