如何在 Kotlin 中注入原始变量?

How to inject primitive variables in Kotlin?

我在我的 Android 应用程序中使用 Dagger2 作为 DI,并且使用此代码将 类 注入我的 Activity 没问题:

@field:[Inject ApplicationContext]
lateinit var context: Context

但是,lateinit 修饰符在 Kotlin 的原始类型属性上是不允许的(例如 Boolean),我该怎么做呢?

@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean

当我从此代码中删除 lateinit 时,出现此错误 Dagger does not support injection into private fields

首先,您不需要 lateinit,您可以将其保留为 var,并使用任意值进行初始化。 其次,您必须公开一个字段,以便让 Dagger 在那里注入。 所以,这是解决方案:

@JvmField // expose a field
@field:[Inject Named("isDemo")] // leave your annotatios unchanged
var isDemo: Boolean = false // set a default value

已接受的答案对我不起作用,但以下答案很有效:

@set:[Inject Named("isDemo")]
var isDemo: Boolean = false

Source