如何在Kotlin中初始化一个引用变量
在Java中,可以用null初始化一个引用变量,例如一个String变量可以被初始化为如下形式:
String str = null;
但是在Kotlin中,重点是尽量避免使用null。 那么如何初始化一个属性而不使用null
var str: String = ...
Kotlin的要点不是不使用null
(和可为空的类型),而是使用方便的语言结构安全地使用它,而不是担心它。 虽然尽可能使用不可空的类型是理想的,但是您不必总是避免它们,这就是为什么存在各种null
处理结构(安全调用,Elvis操作符等)的原因。
如果你可以延迟创建你的变量,直到你有一些东西分配给它,这是一个解决方案。 如果你不能,那么将它标记为空并且给它赋值是非常好的,因为编译器会保护你免于做危险的事情。
你可以做
var str: String ... str = "Some Awesome Value"
如果你想它可以空,你可以做
var str: String?
作为一个选项:
var str: String by Delegates.NotNull()
用户lateinit
关键字。需要使用,然后初始化
private lateinit var str : String fun myInit(){ str = "something"; }
注意:访问未初始化的lateinit
属性会导致lateinit
。
但是, lateinit
不支持基本数据类型,如Int
。