在Java中,可以使用null初始化引用变量,例如字符串变量可以这样初始化:
在Kotlin中,重点是尽可能避免使用null。那么我如何在不使用null的情况下初始化属性?
String str = null;
在Kotlin中,重点是尽可能避免使用null。那么我如何在不使用null的情况下初始化属性?
var str: String = ...
用户需要使用lateinit
关键字。在使用前需要进行初始化。
private lateinit var str : String
fun myInit(){
str = "something";
}
lateinit
属性会导致UninitializedPropertyAccessException
异常。lateinit
不支持基本数据类型,例如Int
。null
(和可空类型),而是通过方便的语言结构安全地使用它,而不是害怕它。尽可能使用非空类型是理想的,但您并不总是必须避免使用它们,这就是为什么存在各种 null
处理结构(安全调用、Elvis 运算符等)的原因。null
分配给它是完全可以的,因为编译器会防止您对其进行危险操作。你可以做到
var str: String
...
str = "Some Awesome Value"
如果你想让它可空,你可以这样做
var str: String?
var str: String by Delegates.NotNull()
String
值? - Bubletanlateinit var
和by lazy { ... }
来定义一个属性,该属性仅在稍后初始化为非空值。请参见:https://dev59.com/s1oV5IYBdhLWcg3wJ8Ab - hotkey