为什么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 中此类消息的逻辑吗?
您可以执行
if (setting.getEnable()) {…}
,因为您已经在使用布尔值并且不需要对其进行评估。
并且因为您不使用原始布尔值,所以您可以执行
if (Boolean.TRUE.equals(setting.getEnable()) {…}
。 .equals()
使用 obj instanceof Boolean
在内部进行 null 检查,防止 NullPointerExceptions。