构造函数注入期间的 Dagger Lazy

Dagger Lazy during constructor injection

我意识到用 Dagger 完成 Lazy 注入的推荐方法是将 Lazy 添加到字段注入点。例如,

class Foo {
    @Inject lateinit var bar: Lazy<Bar>

    fun useBar() = bar.get().doSomething()
}

使用构造函数注入怎么样?我没看到有人这样做过。

class Foo @Inject constructor(private val fizz: Fizz,
                              private val bar: Lazy<Bar>) {    
    fun useBar() = bar.get().doSomething()
}

总而言之,在进行 Dagger 惰性注入时,我可以在构造函数中使用 Lazy<Bar> 吗?或者我唯一的选择是将 Lazy<Bar> 移动到字段注入,同时将其他非惰性依赖项保留在通过构造函数注入的相同 class 中?

感谢指点!

构造函数注入与常规字段注入没有区别,Lazy-wrapped 构造函数参数是可以接受的。

您唯一需要确保的是通过依赖关系图中某处的模块公开依赖关系。