gpt4 book ai didi

android - RoboGuice 怎么知道我要注入(inject)什么?

转载 作者:太空狗 更新时间:2023-10-29 12:44:00 24 4
gpt4 key购买 nike

我正在使用 RoboGuice 4.0beta2,我遇到了这个问题

我有几个实现相同接口(interface)的不同对象

调用他们A 实现 ITestB 实现 ITestC 实现 ITest

我有 D 类,它同时使用了所有 3 个实现,每个都有不同的目的,但使用相同的 API

在类 D 中,我想注入(inject) A、B 和 C,它们彼此无关,只是它们都实现了相同的接口(interface)

我如何配置 Module 类才能知道我指的是 ITest 的不同实现?

最佳答案

假设您有以下配置:

class D{
@Inject ITest a;
@Inject ITest b;
@Inject ITest c;
}

你可以像下面这样设置你的模块,这样你就可以通过@Name注入(inject)不同的类型:

public class ABCModule extends AbstractModule {

@Override
protected void configure() {
bind(ITest.class).annotatedWith(Names.named("a")).to(A.class);
bind(ITest.class).annotatedWith(Names.named("b")).to(B.class);
bind(ITest.class).annotatedWith(Names.named("c")).to(C.class);
}
}

它允许你像这样注入(inject)不同的类型:

class D{
@Inject @Named("a") ITest a;
@Inject @Named("b") ITest b;
@Inject @Named("c") ITest c;
}

关于android - RoboGuice 怎么知道我要注入(inject)什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21145565/

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