You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Kotlin中Boolean类型无法使用lateinit修饰符?

Kotlin中lateinit修饰Boolean报错的解决办法

报错信息翻译为:原始类型的属性不允许使用'lateinit'修饰符

Kotlin里的lateinit是专门给引用类型(比如String、自定义类)设计的延迟初始化修饰符,这类类型默认值为null,lateinit能让你跳过空安全检查,后续再完成初始化。但Boolean属于原始基本类型,本身有默认值(默认是false),所以Kotlin不允许给这类类型加lateinit。

给你两种可行的解决方式:

方式一:使用可空类型

把Boolean改成可空的Boolean?,默认值设为null,后续直接赋值即可,使用时注意处理空安全:

object BankAccount {
    lateinit var accountName: String
    lateinit var accountNumber: String
    var accountStatus: Boolean? = null
}

// 初始化操作
BankAccount.accountStatus = true

方式二:使用Delegates.notNull()委托

这个委托能实现类似lateinit的效果,确保属性在使用前完成初始化,未初始化就调用会抛出异常,适合原始类型:

import kotlin.properties.Delegates

object BankAccount {
    lateinit var accountName: String
    lateinit var accountNumber: String
    var accountStatus: Boolean by Delegates.notNull()
}

// 初始化操作
BankAccount.accountStatus = false

内容的提问来源于stack exchange,提问作者user22210486

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:22:11