【发布时间】:2016-09-05 23:50:33
【问题描述】:
我还没有找到关于使用 Dagger 2 进行方法注入的好的解释/示例。有人可以帮我理解吗?
例子:
@Inject
public Dinner makeDinner(Pasta pasta, Sauce sauce) {
mPan.add(pasta);
mPan.add(sauce);
return mPan.cookDinner();
}
所以如果我用@Inject 注释我的方法,我是否正确地假设方法签名中的参数将注入对象图中定义的对象?那么如何在我的代码中使用此方法呢?当我进行方法调用时,它仍然希望我提供所有参数,这有点违背目的。
更新:
因此,据我了解,如果我调用 DinnerComponent.dinner(),Dinner 对象将可用,假设我的 DinnerComponent 设置如下:
@Component(modules = DinnerModule.class)
public interface DinnerComponent {
Dinner dinner();
}
我的 DinnerModule 是这样设置的:
@Module
public class DinnerModule {
public DinnerModule() {}
@Provides
Pasta providePasta() { return new Pasta(); }
@Provides
Sauce provideSauce() { return new Sauce(); }
}
如果我想吃油炸晚餐怎么办? 那么我们来介绍一下这个方法:
@Inject
public Dinner makeDinner(Pasta pasta, Sauce sauce) {
mPan.add(pasta);
mPan.add(sauce);
return mPan.fryDinner();
}
如何在组件中指定哪个晚餐是哪个?
【问题讨论】:
-
我不知道你是从哪里得到这个例子的,但是看着它我想你可能想阅读关于辅助注射的文章。
-
你可以使用@Named注解。
-
不需要空的ctor public DinnerModule() {}
标签: java android dependency-injection dagger-2