我正在尝试注入一个在类中使用某些静态常量初始化的映射。

但是,由于我是Guice的新手,所以我无法继续前进,并且我不确定如何使用此地图?
我要注入的地图是:

Map> MyClass中的MyMap。

我为MyInjectedMap编写了一个类,其中包含要在其中构造MyMap的类。我编写了一个模块,并将该类绑定在那里。但这是行不通的。

public class MyInjectedMap {

    private Map<String, List<String>> MyMap = new HashMap<>();

    private List<String> data = Arrays.asList("abc");

}


我想用我制作的数据数组列表填充MyMap。
我想问一下,需要在此类中编写哪种方法,以便为我提供MyMap进行注入?

最佳答案

您将需要将MyInjectedMap转换为提供程序,然后将其适当地绑定到模块中。假设您不希望此地图包含所有地图,则将创建自定义注释或使用guice提供的@Named:

public class MyMapProvider implements Provider<Map<String,List<String>> {
    private Map<String,List<String>> myMap = new HashMap<>();

    public Map<String,List<String>> get() {
        return myMap;
    }
}


并设置进样器:

bind(new TypeLiteral<Map<String,List<String>>>(){}).annotatedWith(Names.named("MyMap")).toProvider(MyMapProvider.class);


然后注入:

@Inject @Named("MyMap") Map<String,List<String>> myMap;


https://github.com/google/guice/wiki/ProviderBindings

关于java - 如何使用guice将此 map 作为bean注入(inject)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55822247/

10-14 22:08