spring-boot - 在 kotlin 的构造函数中使用 lateinit 属性

标签 spring-boot kotlin

如何在我的类构造函数中使用 lateinit 属性:

我有一个 spring 组件,用于设置和访问第三方库,如下所示:

@Service
class LibProxy {

    @Value("\${lib.someProperty}")
    private lateinit var someProperty: String

    final var lib: Lib

    init {
        lib = Lib(someProperty)
    }
}

这给出了一个

kotlin.UninitializedPropertyAccessException: lateinit property someProperty has not been initialized

这应该怎么做?

我想避免这样的结构:

@Service
class LibProxy {

    @Value("\${lib.someProperty}")
    private lateinit var someProperty: String

    private var lib: Lib? = null

    getLib(): Lib {
        if (lib == null) {
            lib = Lib(someProperty)
        }
        return lib ?: Lib(someProperty)
    }
}

最佳答案

根据 JEY的评论。应该是这样的:

@Service
class LibProxy(@Value("\${lib.someProperty}") private val someProperty: String) {

    final var lib: Lib

    init {
        lib = Lib(someProperty)
    }
}

关于spring-boot - 在 kotlin 的构造函数中使用 lateinit 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122842/

相关文章:

spring-boot - jsonDoclet 任务 : Javadoc generation failed

spring-boot - @Value注解什么时候给变量赋值?

java - 使用从 Kotlin 数据类生成的代码时出现 "Incompatible types"错误

kotlin - 如何隐藏某些片段中的底部导航栏?

android - 使用正确的上下文

lambda - 我可以在 kotlin 中转换模板表达式或 lambda 表达式中的字符串吗?

spring-boot - Spring Boot gradle多模块项目 Unresolved reference 错误

java - Spring Boot Web应用程序 : Unable to load class: com. ibm.as400.access.AS400JDBCDriver

spring-boot - Spring Boot 项目 Jar 文件不读取放在类路径上的文件

reflection - 我想检测一个 JVM 类是否是 Kotlin 类