我还没有找到一个好的解释/示例来说明如何使用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();
}
在组件内部,我该如何指定哪个晚餐是哪个?