请问在Kotlin中,处理可空值、引用或转换这些值的惯用方法是什么?

在Kotlin中,处理可空值、引用或转换这些值的惯用方法是什么?

如果我有可空类型Xyz?,我希望引用它或将其转换为非空类型。Xyz..在科特林,这样做的习惯方式是什么?

例如,此代码出错:

val something: Xyz? = createPossiblyNullXyz()something.foo() 
// Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?"

但是,如果我首先检查NULL是允许的,为什么?

val something: Xyz? = createPossiblyNullXyz()if (something != null) {
    something.foo() }

如何更改或不将值视为null而不要求if好吧,假设我真的不知道null?例如,在这里,我从一个可以保证存在的映射中检索一个值,并保证get()不是null..但我有个错误:

val map = mapOf("a" to 65,"b" to 66,"c" to 67)val something = map.get("a")something.toLong()
 // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Int?"

方法get()认为项目丢失并返回类型是可能的。Int?..因此,强制该值的类型不可为空的最佳方法是什么?



明月笑刀无情
浏览 1021回答 3
3回答

米脂

Val:xyz=create可能的NullXyz()!将在createPossiyNullXyz()返回NULL时抛出NPE。它更简单,并且遵循处理您知道的值不为NULL的约定
打开App,查看更多内容
随时随地看视频慕课网APP