Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用guice将此映射作为bean注入?_Java_Guice - Fatal编程技术网

Java 如何使用guice将此映射作为bean注入?

Java 如何使用guice将此映射作为bean注入?,java,guice,Java,Guice,我试图注入一个映射,该映射是使用类中的某些静态常量初始化的 然而,我无法继续前进,因为我是Guice的新手,我不确定如何使用此地图? 我要注入的映射是: Map>MyClass中的MyMap 我为MyInjectedMap编写了一个类,其中包含了MyMap的构建位置。我编写了一个模块并将这个类绑定到那里。但这不起作用 public class MyInjectedMap { private Map<String, List<String>> MyMap = ne

我试图注入一个映射,该映射是使用类中的某些静态常量初始化的

然而,我无法继续前进,因为我是Guice的新手,我不确定如何使用此地图? 我要注入的映射是:

Map>MyClass中的MyMap

我为MyInjectedMap编写了一个类,其中包含了MyMap的构建位置。我编写了一个模块并将这个类绑定到那里。但这不起作用

public class MyInjectedMap {

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

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

}
公共类MyInjectedMap{
私有映射MyMap=newhashmap();
私有列表数据=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;
    }
}

公共类MyMapProvider实现Provider如果您仅使用Guice实现注入,请查找java.lang.reflect,它为所有字段提供#set
bind(new TypeLiteral<Map<String,List<String>>>(){}).annotatedWith(Names.named("MyMap")).toProvider(MyMapProvider.class);
@Inject @Named("MyMap") Map<String,List<String>> myMap;