我有很多这样的电话:
(ListView) getView().findViewById(R.id.main_list_view);
(TextView) getView().findViewById(R.id.items_no);
....
AndroidStudio 告诉我他们可能会产生NullPointerException
:
方法调用
getView().findViewById(R.id.main_list_view)
可能会产生java.lang.NullPointerException
更少的... (Ctrl+F1)此检查分析方法控制和数据流,以报告始终为真或假的可能条件、其值被静态证明为常数的表达式以及可能导致可空性合同违规的情况。
变量、方法参数和返回值被标记为
@Nullable
或被@NotNull
视为可空(或分别为非空)并在分析期间用于检查可空性合同,例如报告可能的NullPointerException
错误。更复杂的合约可以使用
@Contract
注解来定义,例如:
@Contract("_, null -> null")
— 如果方法的第二个参数为 null@Contract("_, null -> null; _, !null -> !null")
,则方法返回 null — 如果第二个参数为 null,则方法返回 null,否则返回非 null
@Contract("true -> fail")
— 一个典型的assertFalse
方法,如果将 true 传递给它就会抛出异常可以将检查配置为使用自定义
@Nullable
@NotNull
注释(默认情况下将使用 annotations.jar 中的注释)
幸运的是一切都有效,但是我可以对这段代码进行改进吗?