Guice的通用类型提供者

时间:2012-10-25 14:38:55

标签: java dependency-injection guice

我正在尝试将类型化对象注入服务类但是获取

    com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for com.bookpac.utils.appserver.ILookup<com.bookpac.server.common.IWS> was bound.
  while locating com.bookpac.utils.appserver.ILookup<com.bookpac.server.common.IWS>
    for parameter 0 at com.bookpac.server.LookupService.<init>(LookupService.java:13)
  while locating com.bookpac.server.LookupService

要注入的字段是ILookup<IWS> lookup, 绑定是bind(ILookup.class).toProvider(LookupProvider.class)

使用@Provides注释时,一切正常,有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用泛型类型时,需要使用TypeLiteral,如:

bind(new TypeLiteral<ILookup<IWS>>(){}).toProvider(LookupProvider.class);

来自documentation

  

Java还没有提供表示泛型类型的方法,所以这个   上课。