如何在Kotlin中初始化一个引用variables

在Java中,可以用null初始化一个引用variables,例如一个Stringvariables可以被初始化为如下forms:

String str = null; 

但是在Kotlin中,重点是尽量避免使用null。 那么如何初始化一个属性而不使用null

 var str: String = ... 

Kotlin的要点不是不使用null (和可为空的types),而是使用方便的语言结构安全地使用它,而不是担心它。 虽然尽可能使用不可空的types是理想的,但是您不必总是避免它们,这就是为什么存在各种null处理结构(安全调用,Elvis操作符等)的原因。

如果你可以延迟创建你的variables,直到你有一些东西分配给它,这是一个解决方案。 如果你不能,那么将它标记为空并且给它赋值是非常好的,因为编译器会保护你免于做危险的事情。

你可以做

 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不支持基本数据types,如Int