首页 > 解决方案 > Kotlin - 可空属性默认为空值

问题描述

假设我定义了一个具有可为属性的类

class ABC {
   var myProperty: String? = null
}

有没有办法将其默认为空值?也许类似于 SCALA 的东西?

var myProperty: String? = _  // compilation error

或者简单地说:

var myProperty: String?  // compilation error

我知道我们可以使用来自 Kotlin 1.2 的lateinit变量,以后可以像这样检查初始化:

lateinit var myProperty: String

if (::myProperty.isInitialized) {
   //value is not-null
}

那么 lateinit 是首选方式吗?是否可以默认为空值或故意省略?

标签: propertieskotlinnullable

解决方案


Kotlin 有意要求您显式初始化所有属性。没有速记语法。对于可为空类型的属性,首选方法不是使用lateinit,而是使用null初始化程序声明它。

isInitialized属性方法lateinit旨在处理诸如清理资源之类的复杂情况;null对于希望节省书面= null作为财产声明一部分的用户,它不打算用作支票的替代品。


推荐阅读