引入NPE的IDEA简化规则

gijlo24d  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(115)

为什么IDEA和Checkstyle认为下面标记的表达式可以简化?

public class MySettingDto {
   private Boolean enabled;

}

...
public void methodA(MySettingDto setting) {
  if (setting == null) {
    return;
  }
  if (setting.getEnable() == true) {  <- CAN BE SIMPIFIED
    ...
  }
}

字符串
简化为if (setting.getEnable())?当enable标志是null时,得到NPE怎么办?也许表明if (setting.getEnable())到位会更好,它可能会抛出NPE?
有人能给我解释一下IDEA的这种信息的逻辑吗?

uxh89sit

uxh89sit1#

你可以做if (setting.getEnable()) {…},因为你已经在使用布尔值,不需要计算它。
因为你没有使用一个基本的布尔值,你可以做if (Boolean.TRUE.equals(setting.getEnable()) {…}.equals()通过使用obj instanceof Boolean在内部做一个null检查,这可以防止NullPointerrupt。

相关问题