首页 > 解决方案 > Java:抑制 NullPointerException 警告的方法注释

问题描述

我的代码中有以下辅助方法,它断言关于我的类中成员字段的一些属性。

private @Nullable Controller mController;

private boolean isControllerReady() {
  return mController != null && mController.isReady();
}

在我的代码的其他地方,我调用了这样的东西......

if (isControllerReady() && mController.canDoSomething()) {
  mController.doSomething();
}

我的 Android Studio 给了我一个警告canDoSomething()

Method invocation 'canDoSomething' may produce 'NullPointerException'

这应该是误报。是否可以进行注释isControllerReady以使 IDE 抑制/忽略此 NPE 警告canDoSomething

标签: javaandroid-studionullpointerexceptionannotations

解决方案


当您将 mController 注释为 Nullable 时,编译器会在您对对象调用任何操作之前尝试警告您检查 mController 是否不为空。

您可以简单地在条件中添加一个空检查。

if (isControllerReady() && mController != null && mController.canDoSomething()) {
  mController.doSomething();
}

推荐阅读