即使在检查后,Android Studio也会抱怨表达式为null

时间:2017-01-31 15:11:59

标签: android android-studio null warnings

我在onCreateView()的{​​{1}}方法中有以下代码行。它警告我Fragment的表达式可以是createPinPresenter.setLoginResult()

expression might be null warning

所以我要求AS生成null检查并执行此操作。

expression might be null even after surrounding with if

即使在自动生成的代码之后,AS仍然会抱怨同一个表达式null。它显然不能在支票内null

我错过了一些明显的东西,或者这是一个错误?

编辑:我使用的是AS 2.2.3版本

1 个答案:

答案 0 :(得分:0)

这是正确的,AS如何知道,例如,getParcelable()是否会返回相同的值?它只是一个语法控制,而不是语义控制。 例如,如果调用它的次数为奇数,则函数可以返回null:在这种情况下,警告是正确的。

想一想:

if (getNextValue() != null)
   value = getNextValue();

如果getNextValue()递增索引,则在数组的末尾可以返回null:错误非常明显,实际上控件试图在代码中阻止它

唯一的解决方案是将getParcelable(KEY_LOGIN_RESULT)的结果存储在临时变量中,在这种情况下,AS将正确管理它。

当然......事实上这是一个自动生成的代码,我认为实际上是一个自动生成的错误,它比控件更不聪明。