如何在Kotlin中注入原始变量?
我在我的Android应用程序中使用Dagger2作为DI,并使用此代码注入类到我的活动罚款:
@field:[Inject ApplicationContext] lateinit var context: Context
但是,在Kotlin的基本类型属性(例如Boolean
)中不允许使用lateinit
修饰符,我该如何做这样的事情?
@field:[Inject Named("isDemo")] lateinit var isDemo: Boolean
当我从这个代码删除lateinit
我得到这个错误Dagger does not support injection into private fields
首先,你不需要lateinit
,你可以把它作为一个var
,并用任意值初始化。 其次,你必须暴露一个领域,以便让匕首在那里注入。 所以,这里的解决方案:
@JvmField // expose a field @field:[Inject Named("isDemo")] // leave your annotatios unchanged var isDemo: Boolean = false // set a default value