gpt4 book ai didi

java - 如何在 Android Activity 上使用 Kotlin 扩展函数正确地进行空值检查

转载 作者:太空狗 更新时间:2023-10-29 16:12:45 25 4
gpt4 key购买 nike

我是 Kotlin 的新手,正在尝试将我们现有代码库中的众多 Android Util 方法之一转换为 Kotlin 扩展函数。

这是 Kotlin 代码:

fun Activity?.isAlive(): Boolean {
return !(this?.isFinishing ?: false)
}

这相当于此 Java 方法:

public static boolean isAlive(Activity activity) {
return activity != null && !activity.isFinishing();
}

但是,每当 Activitynull 时,我仍然会在 Kotlin 代码中收到 NPE。对我哪里出错有任何想法吗?

最佳答案

我想你得到的 NPE 不是在 isAlive() 函数中而是在之后的某个地方,当 Activity 被引用时。这可能是由于 .isAlive()null 接收器上返回 true

那是因为如果接收者为 nullthis?.isFinishing ?: false 选择正确的分支 false,因此 ! (this?.isFinishing?: false)true

尝试以任一方式更改您的函数,以便它在 null 接收器上返回 false,例如:

fun Activity?.isAlive(): Boolean = !(this?.isFinishing ?: true)

关于java - 如何在 Android Activity 上使用 Kotlin 扩展函数正确地进行空值检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com