我有一个具有以下结构的课程。
是"合法"在Dagger中,同时在字段变量和构造函数中@Inject bean,正如我在下面所做的那样?如果不是 - 我有一个MyActivityModule和MyApplicationModule,我如何从MyApplicationModule获取依赖项并将它们添加到我在MyActivityModule中的provideWhatEvery中使用的构造函数中?
@Inject SmsFormatter mSmsFormatter;
@Inject SmsGuardiansUtils smsGuardiansUtils;
@Inject BipperMediaPlayer bipperMediaPlayer;
@Inject MixPanelUtils mMixpanelUtils;
@Inject
public ImHereController(View view, Context context, AlarmModel alarmModel, ActionBarListener actionBarListener,
FragmentController fragmentController){
super(view, context, alarmModel, actionBarListener, fragmentController);
}
答案 0 :(得分:0)
您可以按原样注入字段和构造函数。构造函数参数将首先被解析并在构造时注入,然后将注入字段。
你问题的其他部分还不清楚 - 你是否通过字段注入或构造函数注入来添加依赖关系并不重要 - 如果你想用构造函数注入添加它们,你可以。
必须使用字段注入的唯一时间是你有一个无法控制实例化的对象,因此dagger本身不能实例化(如Activity和Application子类型。)
所有这一切,我不会在没有一些令人信服的理由的情况下使用它们 - 构造函数注入在语义上更清晰,你可以使实例变量最终。或者,现场注入更简洁,在案例中可能更具可读性。我会选一个,而不是两个。