我想将一个类作为单例注入,但是Dagger将其他实例注入到Kotlin文件中,而不是注入到Java文件中。 为什么会发生?
答案 0 :(得分:0)
您没有提供代码,因此要给出完整的答案并不容易。但是,我的猜测是您要创建组件的2个不同实例,一个在Kotlin中,一个在Java中。 但是,只有在始终重复使用同一组件时,Dagger才能“保证”单个实例。如果您创建组件的两个不同实例,一个在Kotlin中,一个在Java中,则它将无法重用您的“单一”模块的同一实例。
其背后的原因是,在生成组件时,Dagger会在您首次调用该模块时插入一些逻辑以创建模块的新实例,然后在以后要获取的所有实例中都返回“已缓存”的实例。相同的模块。