美文网首页
【Android】Kotlin toString() 不可以随便

【Android】Kotlin toString() 不可以随便

作者: 果果_Zhen | 来源:发表于2021-02-10 10:56 被阅读0次

        举个例子:如下的两种 toString() 方法,第一种返回的是 "" 空字符串吗?

        事实并非如此,它返回的是 "null" 

图1 两种toString()方法

这是为什么呢?

这主要是因为 Kotlin 和 Java 不同,Kotlin增加了空值 ? 。因此,第一个是 Any? 的 toString() 扩展方法,第二个调用的是 Any 类的 toString() 成员方法。

可以看一下 Any?.toString() 如果说明的,当对象为 null 时,返回的时 "null" 而不是 "" (空字符串)

图2 Any?.toString()

开发中如果避免或者区分:

辨认:

通过扩展函数辨认。Kotlin 中的 Any 类和类似于 Java 中的 Object 类。因此每一个对象都应该有一个成员方法 toString()。那么只要区分显示的 toString() 是否是扩展函数就可以了,图1 中可以明显看出黄色斜体为扩展函数。

更改:

既然辨认出来了,那么如何更改呢?有两种方法:

第一种:调用一个可空变量的 toString() 方法时,改用这种方式 

var a: Int? = null

val str = a?.toString() ?: ""

第二种:更改扩展函数,可以重写 Any?.toString() 方法

fun Any?.toString():String{ return this?.toString() ?: ""}

相关文章

网友评论

      本文标题:【Android】Kotlin toString() 不可以随便

      本文链接:https://www.haomeiwen.com/subject/mgghxltx.html