如何消除Android Studio中getFragment调用的NullPointerException警告
消除
getFragment调用处的NullPointerException警告方案 你遇到的警告来自Android Studio内置的Lint静态代码检查,默认会对未做空校验的方法返回值做风险提示。由于你业务逻辑中getFragment(String name)返回null属于预期合法行为,不需要通过断言、Objects.requireNonNull()强制做非空处理,可通过以下方式让IDE识别该逻辑合理性,消除警告:
方案1:为方法添加@Nullable注解(最优,一劳永逸)
这是最符合Android静态检查规范的方案,直接在你定义的getFragment方法返回值上标记可空注解,明确告知IDE该方法的返回值允许为null:
// 根据项目依赖选择对应注解包,AndroidX项目导入androidx.annotation.Nullable // 旧版Support库项目导入android.support.annotation.Nullable @Nullable public Fragment getFragment(String name) { // 原有业务逻辑,支持返回null的实现不需要改动 }
添加注解后IDE会自动识别该方法返回null是合规逻辑,调用位置不会再弹出对应警告,同时后续调用该方法时IDE还会主动提示你按需做空判断,不会破坏代码检查的有效性。
方案2:局部抑制警告(适合无法修改方法定义的场景)
如果getFragment来自第三方依赖、或是历史存量代码不方便直接修改注解,可以在触发警告的代码行上方添加抑制注解,仅关闭当前位置的对应检查:
@SuppressWarnings("ConstantConditions") toSwitch = ((LoginActivity) getActivity()).getFragment(LoginFragment.class.getName());
如果需要对整个方法、整个类关闭该检查,把上述注解放到对应方法、类的声明位置即可。
方案3:全局关闭该类检查(不推荐)
你也可以通过IDE设置全局关闭这类空指针风险提示,操作路径如下:
- 打开设置面板:
File > Settings(Mac系统为Android Studio > Settings) - 依次进入
Editor > Inspections > Java > Probable bugs > Nullability problems - 取消勾选
Method invocation may produce 'NullPointerException'选项后保存配置
注意:全局关闭后IDE将不会提示所有位置的潜在空指针调用风险,容易遗漏真正需要做空校验的业务逻辑,除非你有完善的其他空检查机制,否则不建议使用该方案。
内容的提问来源于stack exchange,提问作者Albert Einstien
相关产品推荐
相关产品推荐

