spring - 原始类型的属性不允许使用“lateinit”修饰符 - Kotlin

标签 spring kotlin properties-file

我在尝试将环境变量值分配给 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/

相关文章:

java - 执行方法栈中所有方法所花费的时间

java - 调用 Spring SecurityContextHolder 时出现 NullPointerException

java - Spring 嵌套 Autowiring 泛型抛出 NoUniqueBeanDefinitionException

android - 如何从 registerActivityResult 捕获 URI?

java - 如何解析属性文件中的属性值

java - 使用 Spring Web Flow 绑定(bind)模型以查看

kotlin - 是否可以检索 lambda 表达式中的字符串?

android - 组合 WorkContinuation 没有按预期工作

java - 将对象的 Yaml 配置列表添加到属性文件

jsf - 如何在复合组件中加载资源包属性文件?