gpt4 book ai didi

java - Dagger 2 依赖注入(inject)不起作用

转载 作者:行者123 更新时间:2023-12-01 18:04:50 25 4
gpt4 key购买 nike

我对 Dagger 2 非常陌生,我正在尝试获取 this进行一些细微修改的基本示例。

这是我到目前为止所拥有的:

组件类

@Component(modules = {MyModule.class})
public interface MyComponent {
void inject(Object object);
}

模块类

@Module
public class MyModule {

@Provides
@Singleton
public Retrofit getRetrofit(){
return new Retrofit();
}
}

静态注入(inject)器

public class MyStaticInjector {

private static MyComponent di;

public static void inject(Object object){
if(di == null){
di = DaggerMyComponent.builder().build();
}
di.inject(object);
}
}

问题是每当我这样做

MyStaticInjector.inject(this);

带注释的字段仍然为空。我怀疑问题出在接口(interface)方法中的对象类型上。在示例中,有一个 Activity。但我需要在不是 Activity 的类中使用 DI。

有人可以帮助我吗?谢谢。

最佳答案

Object 没有 @Inject 带注释的字段。因此,注入(inject)工作得很好——只是没有什么可注入(inject)的。
您必须使用 inject(MyClass) 而不是 Object 来使用实际的类,以便可以生成代码并注入(inject)字段。

Dagger 在编译时生成源代码。如果它不知道实际的类,则无法为其创建代码。

关于java - Dagger 2 依赖注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388151/

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