guice,MapBinder和参数化接口

时间:2013-04-21 12:00:02

标签: java guice

我正在使用guice和MapBinder。我有以下服务接口:

public interface IService<K, V>

和两个实现:

public class AService implements IService<String, String>
public class BService implements BService<String, String>

我想像这样使用MapBinder:

MapBinder<String, IService<String, String>> mapBinder =
            MapBinder.newMapBinder(binder(), String.class, WHAT_TO_DO_HERE);

因为我做不到

IService<String, String>.class 

在WHAT_TO_DO_HERE部分,我的第一个想法是为IService创建一个标记界面,然后继续。我的问题是:

  1. 在guice中执行此操作的最佳做​​法是什么?

  2. 这里标记界面的想法有问题吗?如果是这样,为什么?

  3. 谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试TypeLiteral (Javadoc)

WHAT_TO_DO_HERE = new TypeLiteral<IService<String, String>>(){};

MapBinder的Javadoc说,虽然您必须将newMapBinder类也包含在String中,但仍有适当的TypeLiteral方法。