【发布时间】:2019-05-11 14:59:09
【问题描述】:
我在尝试将环境变量值分配给 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' 修饰符不允许用于带有初始化程序的属性
对于我阅读的内容,我需要一个委托 (https://kotlinlang.org/docs/reference/delegated-properties.html),但我无法完全掌握它。此外,如果有“更清洁”的解决方案,我不想编写另一种方法来设置属性。 有什么想法吗?
【问题讨论】:
-
如果可以初始化变量,只需去掉
lateinit修饰符即可。 -
如果您想知道为什么会这样:Why doesn't Kotlin allow to use lateinit with primitive types?... 那么如果该变量从未初始化,那么该变量的默认值应该是什么?如果是
false,则使用:private var myBooleanEnabled : Boolean = false并将其设置为系统属性,如果存在....问题解决了吗?
标签: spring kotlin properties-file