我想知道 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可以访问。
谢谢!