gpt4 book ai didi

java - 在私有(private) guice 模块中公开 Map

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:25 25 4
gpt4 key购买 nike

我在 guice 中有一个 PrivateModule,我想从该模块公开一个 Map

public class TestInjectionModule extends PrivateModule {
expose(Map.class).annoatedWith(Names.named("map"));
}

map 提供商

@Named("map")
@Provides
@Singleton
Map<String, String> providesMap(@Named("name1") String v1, @Named("name2") String v2){
return ImmutableMap.of("key1", v1, "key2", v2);
}

我收到以下错误。

Could not expose() java.util.Map annotated with @com.google.inject.name.Named(value=map), it must be explicitly bound.

公开此 map 的正确方法是什么?

最佳答案

这能编译吗?

expose(Map.class).annotatedWith("map");

根据 Javadoc,annotatedWith采用注释,而不是字符串。

试试这个:

expose(Map.class).annotatedWith(Names.named("map"));

Names.named() javadoc

此外,请确保向您的提供程序方法添加 @Provides 注释

关于java - 在私有(private) guice 模块中公开 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com