J'essaie d'injecter une carte dans une classe en utilisant Guice où la carte a la forme Map<MyInterface, Integer>
.Injecter la clé dans MapBinder
Je souhaite utiliser l'extension MapBinder
pour cela, mais il semble que MapBinder nécessite un objet instancié pour la clé. Je voudrais que Guice injecte des instanciations de la clé, car ce sont des objets complexes qui nécessitent des injections de leur part. I.e, quelque chose comme:
MapBinder<MyInterface, Integer> mapBinder =
MapBinder.newMapBinder(binder(), MyInterface.class, Integer.class);
mapBinder.addBinding(MyInterfaceImpl1.class).to(5);
mapBinder.addBinding(MyInterfaceImpl2.class).to(6);
Ceci est illégal, car addBinding attend une instance de la classe. Je sais que je pourrais changer l'ordre des objets dans la carte, mais les valeurs entières ne sont pas uniques alors je me retrouverais avec un Map of Integer -> List, qui est plutôt moche. Quelqu'un a des idées?
Ok, merci. C'est ce que j'ai supposé, mais je me suis dit que ça valait le coup de vérifier si quelqu'un avait une autre idée. Je pense que j'ai trouvé une solution différente qui fonctionnera pour moi. –