gpt4 book ai didi

java - 绑定(bind)同一个接口(interface)两次(Guice)

转载 作者:行者123 更新时间:2023-12-02 11:51:42 25 4
gpt4 key购买 nike

我的类(我们称它们为XY)都实现了Parser接口(interface),执行(相对)CPU密集型操作来构建某些特定的解析器语法(XY 的语法不同)。

现在我想(使用 Guice)将 XY 的依赖项注入(inject)到(上层)解析器 P 的构造函数中。 P 的两个参数都应为 Parser 类型:

class P implements Parser {

@Inject
public P(Parser x, Parser y) {
// ...
}

}

如何让 Guice 区分 P 的两个参数中的哪一个应接收 XY

如您所知,XY 应注释为 @Singleton (但此注释似乎与问题无关)。

最佳答案

您需要使用Named像这样的注释:

class P implements Parser {

@Inject
public P(@Named("x") Parser x, @Named("y") Parser y) {
// ...
}

}

在 Guice 配置中将每个命名变量分配给他自己的实现类

bind(Parser.class)
.annotatedWith(Names.named("x"))
.to(ParserXImplementation.class);

bind(Parser.class)
.annotatedWith(Names.named("y"))
.to(ParserYImplementation.class);

关于java - 绑定(bind)同一个接口(interface)两次(Guice),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838771/

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