如何使用提供Cat。
的组件创建Dog实例public final class Dog {
private final Cat mCat;
public final static String TAG = "Dog";
@Inject public Dog(Cat cat) {
mCat = cat;
Log.e(TAG, "Dog class created");
}
}
在尝试使用Dagger 2一段时间后,我不知道如何使用构造函数注入 - 一个提示会很好,谢谢。
修改
问题怎么了?在使用Dagger 2之后,按照几个教程并阅读官方文档,我不知道如何使用构造函数注入功能,这就是我在这里问的原因。而不是使用@Inject将Cat依赖项注入Dog中,我可以编写一个提供Dog对象的DogModule,但是Dog将只是一个普通的Java类。现场注入效果很好(有很多示例说明如何使用它)但是我需要做什么才能使用构造函数注入?
答案 0 :(得分:13)
要使用Dagger 2构造函数注入功能创建对象,您需要向提供Cat类的组件添加方法。
@Component(
dependencies = ApplicationComponent.class,
modules = CatModule.class)
public interface ActivityComponent {
void inject(final CatActivity a);
// objects exposed to sub-components
Cat cat();
Dog dog();
}
然后可以通过调用[Component].dog()
来恢复Dog的实例。
final ActivityComponent comp = DaggerActivityComponent.builder()
.applicationComponent(app.getApplicationComponent())
.build();
final Dog d = comp.dog();