Dagger 2 - Lack of Constructor Injection example

喜你入骨 提交于 2019-12-06 11:13:04

If you have

@Module
public class ModuleA {
    /*unscoped*/ @Provides public ClassA provideA(){
        return new ClassA();
    }
}

/*unscoped*/
public class ClassB{
    private ClassA a;

    @Inject public ClassB(ClassA a){
        this.a = a;
    }
}

Then you'll need

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();
}

And then you can either access like so

MyComponent component = DaggerMyComponent.create();
ClassB classB = component.classB();

Or

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();

    void inject(MyClass myClass);
}

And

public class MyClass {
    @Inject
    ClassB classB;

    public void init() {
        MyComponent component = getComponent();
        component.inject(this);
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!