给定代码
fun main(args: Array<String>) {
val someText: String? = null
println(someText.toString())
}
运行时,输出为
null
出现两个问题:
- 是否可以实现自定义空安全方法并回退到某些默认代码(例如,我认为 toString 可以)
- 为什么不抛出异常?
给定代码
fun main(args: Array<String>) {
val someText: String? = null
println(someText.toString())
}
运行时,输出为
null
出现两个问题:
从文档:
fun Any?.toString(): String
返回对象的字符串表示形式。可以使用 null 接收器调用,在这种情况下,它返回字符串“null”。
您可以通过编写扩展函数来实现类似的行为。例如:
fun Any?.foo() = println(this ?: "Sadly, this is null")
fun main(args: Array<String>) {
val x: Int? = null
val y: Int? = 3
x.foo() // "Sadly, this is null"
y.foo() // "3"
null.foo() // "Sadly, this is null"
}