0

我正在使用 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. 标记界面的想法在这里有问题吗?如果是这样,为什么?

谢谢

4

1 回答 1

1

您可以尝试TypeLiteral (Javadoc)

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

和 JavadocMapBinder说,有一个适当的newMapBinder方法,虽然你必须将String类也包装到一个TypeLiteral.

于 2013-04-21T12:11:44.440 回答