我如何使用提供 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 一段时间后,我不知道如何使用构造函数注入 - 一个提示会很好,谢谢。
Edit:
问题有什么问题吗?使用 Dagger 2 后,遵循了几个教程并阅读了官方文档,我不知道如何使用构造函数注入功能,这就是我在这里问的原因。我可以编写一个提供 Dog 对象的 DogModule,而不是使用 @Inject 将 Cat 依赖项注入到 Dog 中,但那时 Dog 将只是一个常规的 Java 类。字段注入效果很好(有很多示例展示了如何使用它),但是我需要做什么才能使用构造函数注入?
要使用 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();
}
Dog 的实例可以通过调用来检索[Component].dog()
.
final ActivityComponent comp = DaggerActivityComponent.builder()
.applicationComponent(app.getApplicationComponent())
.build();
final Dog d = comp.dog();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)