IDEA 为 NPE 带来的简化规则

问题描述 投票:0回答:1

为什么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 中此类消息的逻辑吗?

java intellij-idea checkstyle
1个回答
1
投票

您可以执行

if (setting.getEnable()) {…}
,因为您已经在使用布尔值并且不需要对其进行评估。

并且因为您不使用原始布尔值,所以您可以执行

if (Boolean.TRUE.equals(setting.getEnable()) {…}
.equals()
使用
obj instanceof Boolean
在内部进行 null 检查,防止 NullPointerExceptions。

© www.soinside.com 2019 - 2024. All rights reserved.