gpt4 book ai didi

kotlin - 可空WeakHashMap迭代期间的Kotlin空检查

转载 作者:行者123 更新时间:2023-12-02 13:34:46 26 4
gpt4 key购买 nike

// I know activity is not ideal here due to lack of equality guaranty; please ignore this part
private val mActivities: WeakHashMap<Activity, Int> = WeakHashMap()
....
mActivities.put(null, null)
mActivities.filter { (backStackEntry: Activity?) ->
// Issue: this does not show any errors but fails at runtime
Logger.warn("$TAG - Activity ${backStackEntry.localClassName}")
val entry: Activity? = backStackEntry
// Works as expected: this does show the error as expected
Logger.warn("$TAG - Activity ${entry.localClassName}")
}

当我尝试遍历可能包含空值的WeakHashMap时,Kotlin空安全检查不起作用。上面列出的示例。关于为什么发生这种情况的任何想法将不胜感激。谢谢!

澄清 ${backStackEntry?.localClassName}有效,但是我担心的是为什么Android Studio或构建逻辑未显示 ${backStackEntry.localClassName}的静态检查错误或编译错误。但是,使用 ${entry.localClassName},Android Studio会将其标记为错误。

最佳答案

WeakHashMap<Activity, Int>类型不提供有关其内容可为空的信息。

考虑将private val mActivities: WeakHashMap<Activity, Int> = WeakHashMap()替换为private val mActivities: MutableMap<Activity?, Int?> = WeakHashMap()

由于您显式指定了backStackEntry可为空,并且编译器仍然没有将backStackEntry取消引用标记为错误,因此它一定是一个错误,应该在youtrack.jetbrains.com/issues/KT上进行报告。

关于kotlin - 可空WeakHashMap迭代期间的Kotlin空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59331317/

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