gpt4 book ai didi

dagger-2 - 如何使用构造函数注入(inject)创建对象?

转载 作者:行者123 更新时间:2023-12-03 11:43:09 27 4
gpt4 key购买 nike

我将如何创建一个带有提供 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 试验了一段时间后,我不知道如何使用构造函数注入(inject) - 一个提示会很好,谢谢。

编辑:
这个问题有什么问题?使用 Dagger 2 之后,看了几个教程并阅读了官方文档,我不知道如何使用构造函数注入(inject)功能,这就是我在这里问的原因。我可以编写一个提供 Dog 对象的 DogModule,而不是使用 @Inject 将 Cat 依赖项注入(inject)到 Dog 中,但是 Dog 将只是一个常规 Java 类。字段注入(inject)效果很好(有很多例子展示了如何使用它)但是我需要做什么才能使用构造函数注入(inject)?

最佳答案

要使用 Dagger 2 构造函数注入(inject)功能创建对象,您需要向提供 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();

关于dagger-2 - 如何使用构造函数注入(inject)创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com