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

时间:2011-05-26 16:50:14

标签: java guice

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

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

我想使用Google-Guice来破坏这些工厂的硬依赖性。

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

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

Eclipse说“IEntityFactory无法解析为变量。”

有人可以帮我理解为什么这不起作用?另外,是否有其他语法可用?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

一种方法是声明一个新接口:

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

然后我可以做:

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

但是,我的项目中已经出现了界面爆炸。 还有更好的方法吗?