Kotlin 函数覆盖空检查
Kotlin function override null check
我尝试获取用户的 lastLocation 并实现了这样的方法。
getLocationClient()?.lastLocation?.addOnSuccessListener(object :
OnSuccessListener<Location> {
override fun onSuccess(loc: Location) {
if (loc == null) return
}
})
但是,当我没有为 onSuccess 方法中的参数 Location 添加 null 安全性时,当 Location 参数为 null 时会导致一些崩溃。
当我如下图所示向参数添加 null 安全性时,它不会覆盖该方法。我能够使用空安全覆盖此方法,但我猜有些事情发生了变化。
我该如何解决这个问题?
OnSuccessListener 的类型参数也需要为空,即 OnSuccessListener<Location?>
而不是 OnSuccessListener<Location>
getLocationClient()?.lastLocation?.addOnSuccessListener(object :
OnSuccessListener<Location?> {
override fun onSuccess(loc: Location?) {
if (loc == null) return
}
})
顺便说一句,您还可以使用 SAM 语法来以更短的方式完成同样的事情:
getLocationClient()?.lastLocation?.addOnSuccessListener { loc: Location? ->
if (loc == null) return
}
我尝试获取用户的 lastLocation 并实现了这样的方法。
getLocationClient()?.lastLocation?.addOnSuccessListener(object :
OnSuccessListener<Location> {
override fun onSuccess(loc: Location) {
if (loc == null) return
}
})
但是,当我没有为 onSuccess 方法中的参数 Location 添加 null 安全性时,当 Location 参数为 null 时会导致一些崩溃。
当我如下图所示向参数添加 null 安全性时,它不会覆盖该方法。我能够使用空安全覆盖此方法,但我猜有些事情发生了变化。
我该如何解决这个问题?
OnSuccessListener 的类型参数也需要为空,即 OnSuccessListener<Location?>
而不是 OnSuccessListener<Location>
getLocationClient()?.lastLocation?.addOnSuccessListener(object :
OnSuccessListener<Location?> {
override fun onSuccess(loc: Location?) {
if (loc == null) return
}
})
顺便说一句,您还可以使用 SAM 语法来以更短的方式完成同样的事情:
getLocationClient()?.lastLocation?.addOnSuccessListener { loc: Location? ->
if (loc == null) return
}