5 votes

Comment configurer Google-Guice à l'aide d'une interface générique ?

J'ai un groupe de fabriques de types d'entités qui dérivent d'une interface commune et générique. Par exemple,

public class ConnectionFactory implements IEntityFactory<Connection> { ... }

J'aimerais utiliser Google-Guice pour briser les dépendances dures sur ces usines.

Cependant, il y a une erreur de syntaxe lorsque j'essaie de configurer Guice :

public class EntityFactoryModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(IEntityFactory<Connection>.class).to(ConnectionFactory.class);
    }
}

Eclipse dit "IEntityFactory ne peut pas être résolu en une variable".

Quelqu'un peut-il m'aider à comprendre pourquoi cela ne fonctionne pas ? Existe-t-il une autre syntaxe qui pourrait fonctionner ?

9voto

Jon Skeet Points 692016

Mon Guice-fu est généralement limité, mais je pense que vous voulez un type littéral ici :

bind(new TypeLiteral<IEntityFactory<Connection>>() {})
    .to(ConnectionFactory.class);

0voto

retrodrone Points 2979

Une méthode consiste à déclarer une nouvelle interface :

interface IConnectionFactory extends IEntityFactory<Connection> { ...}

Alors je peux le faire :

bind(IConnectionFactory.class).to(ConnectionFactory.class);

Mais, il y a déjà une explosion de l'interface dans mon projet. Y a-t-il une meilleure solution ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X