无极注入匕首

时间:2021-06-08 13:17:24

标签: java dependency-injection dagger-2

我想知道 Dagger 中是否有一种方法可以保证在运行时提供依赖项?就我而言,我的包 A 不能依赖包 B 中的任何内容,但是包 A 中的 Dagger 组件依赖于一个模块,该模块包含一个方法,该方法接受一个接口,该接口具有 B 中提供的依赖项。如果我不能承诺依赖将在运行时存在,我还能做些什么来解决这个问题,而无需使用其他匕首技术使 A 可以访问包 B?我想知道 @BindsOptionalOf 注释是否有任何用处。这是一个代码表示:

@Component (modules = {ModuleA.class, ModuleB.class})
@Singleton
public interface ComponentA {

  AObject getA();

}
@Module
public abstract class ModuleA{

    @Provides
    static XInterface provideX(InterfaceB b) {
        return new XImpl(b);
    }
}
@Module
public abstract class ModuleB{

  @Binds
  abstract InterfaceB bindB (BImpl impl);
}

组件A或模块A无法访问模块B,但接口B可以访问。

谢谢!

0 个答案:

没有答案
相关问题