如何处理类型不匹配的字符串和字符串?

时间:2019-05-21 19:17:28

标签: android kotlin

我要执行分配时遇到类型不匹配的情况。 所需的值为String,但是我有String?。我的问题是:我应该如何通过toString方法或通过添加非null asserted(!!)调用来处理它。我想知道其中哪个对安全性或性能更好。问题在于关于一种语言的最佳实践。

4 个答案:

答案 0 :(得分:2)

你可以这样做

val someString : String = someOtherNullableString ?: ""

如果不为null,将采用someOtherNullbleString的值;如果为null,则将采用“”

答案 1 :(得分:0)

尝试避免使用!!运算符。当您百分百确定没有null时,应该使用它。总是最好使用 Elvis 运算符(如果左侧的表达式为null,则将评估和分配默认值表达式)

val s1: String? = null
val s2: String = s1 ?: "default value if s1 is null"

答案 2 :(得分:0)

有很多方法。取决于要求

var str1: String? = null

//....

str1.notNull{ //no default value
    // your code
    str2 = it

}

或者在str1为null的情况下要提供一个值

str2 = str1?:"default_value"

答案 3 :(得分:-1)

我喜欢takeIf方法:

val someString = nullableString.takeIf { it != null } ?: ""

someString将采用nullableString值,除非它为null。如果为空,则将其设置为“”。

我特别喜欢在服务级别上使用此方法,因此使用我的服务的人将永远不需要对待null值。显然,{}之间的逻辑可能比此示例复杂得多。