我不明白为什么Android Studio无法这么说,尽管SharedPreferences将getString的defValue声明为@Nullable,但当前值实际上不是null!
以下调用的结果:
myFunction(getSharedPreferences().getString(MY_SETTING_NAME.name(), "This string is not null"))
将触发警告:
Argument might be null
怎么可能?由于defValue实际上不是null,我们知道它...
答案 0 :(得分:0)
Android框架不使用Kotlin contracts,并且无法根据您传递的@Nullable
是否为空来更改返回值上的defValue
注释。
作为替代方案,您应该考虑使用Kotlin的elvis operator并编写如下代码:
myFunction(getSharedPreferences().getString(MY_SETTING_NAME.name(), null)
?: "This string is not null")
正确评估为非null