在if语句中,是否应该出于任何原因/情况在Objects.isNull()上使用object == null ?
是的,原因之一是使代码保持简单。在if语句 object == null
是明确和众所周知的。例如,如果有错字,就不会导致任何不良行为。
我的理解是Objects.isNull()会通过省略第二个=来消除为对象意外分配空值的机会。
如果省略了if (object = null) {}
with ,它将不会编译,或者在出现对象的情况下会生成警告!实际上,没有理由在if语句中使用over 。这是两个并排的变体: =
Boolean
Objects.isNull(object)
object == null
if (object == null) {
}
if (Objects.isNull(object)) {
}
应该将Objects.isNull()仅限于谓词吗?
可以说是的,它只限于谓词,尽管使用技术Objects.isNull()
无处不在。
从public static boolean isNull(Object obj)
方法的javadoc中:
@apiNote此方法存在用作java.util.function.Predicate,filter(Objects :: isNull)
因此,如果您不是以谓词方式使用该方法,则实际上您使用的是比简单方法更为复杂和繁琐的表达式object == null
。
这是一个片段,用于比较 Objects.isNull(object)
List<String> list = Arrays.asList("a", "b", null, "c", null);
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
if(null == variable)
一致…