我在尝试将环境变量值分配给 lateinit
变量时遇到错误。
错误是“原始类型的属性不允许'lateinit'修饰符”。
我的application.properties(读取环境变量)
my.property.from.properties.file=true
MyService 类:
@Component
class MyService @Autowired constructor(
private val someService: SomeService) {
@Value("\${my.property.from.properties.file}")
private lateinit var myBooleanEnabled: Boolean
给它赋值并不能解决问题。例如,使用
private lateinit var myBooleanEnabled: Boolean = true
我收到 2 个错误:
- 原始类型的属性不允许使用“lateinit”修饰符
- 带有初始值设定项的属性不允许使用“lateinit”修饰符
根据我读到的内容,我需要一个委托(delegate)( https://kotlinlang.org/docs/reference/delegated-properties.html ),但我无法完全掌握它。另外,如果有“更干净”的解决方案,我不想编写另一个方法来设置属性。 有什么想法吗?
最佳答案
最简单的事情是将 myBooleanEnabled
定义为可空并删除 lateinit
private var myBooleanEnabled: Boolean? = null
在这种情况下,它不会被解释为字节码中的原始 bool
。
但是,就您而言,我建议构造函数注入(inject)。
关于spring - 原始类型的属性不允许使用“lateinit”修饰符 - Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710263/