2013-04-21 47 views
0

我正在使用guice和MapBinder。我有以下服務接口: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_H ERE部分,我的第一個想法是爲IService創建一個標記界面,然後繼續。我的問題是:

  1. 爲了在guice中做到這一點,最佳做法是什麼?

  2. 標記接口的想法是否存在問題?如果是這樣,爲什麼?

感謝

回答

1

你可以嘗試TypeLiteral(Javadoc)

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

MapBinder的Javadoc說,有一個適當的newMapBinder方法,雖然還必須包裹String類爲TypeLiteral

+0

謝謝,剛用過它。 – gpol 2013-04-21 12:19:09