如何使用通用界面配置Google-Guice?

ret*_*one 5 java guice

我有一堆实体类型的工厂,它们来自一个通用的通用接口.例如,

public class ConnectionFactory implements IEntityFactory<Connection> { ... }
Run Code Online (Sandbox Code Playgroud)

我想使用Google-Guice打破这些工厂的硬依赖.

但是,当我尝试配置Guice时出现语法错误:

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

Eclipse说"IEntityFactory无法解析为变量".

有人可以帮我理解为什么这不起作用?另外,还有一种替代语法可行吗?

Jon*_*eet 9

我的Guice-fu通常是有限的,但我认为你想要一个类型文字:

bind(new TypeLiteral<IEntityFactory<Connection>>() {})
    .to(ConnectionFactory.class);
Run Code Online (Sandbox Code Playgroud)

  • @retrodrone,@ Jon:你也可以做`getProvider(new Key <IEntityFactory <Connection >>(){})`. (2认同)