【发布时间】:2019-12-14 00:25:41
【问题描述】:
// 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 会将此标记为错误。
【问题讨论】:
-
试试这个:
${backStackEntry?.localClassName} -
感谢您抽出宝贵时间 -
${backStackEntry?.localClassName}有效,但我担心的是为什么 Android Studio 或构建逻辑没有显示${backStackEntry.localClassName}的静态检查错误或编译错误。但是使用${entry.localClassName},Android Studio 会将此标记为错误。
标签: kotlin