if 문 에서 Objects.isNull () 위에 object == null을 사용해야하는 이유 / 상황이 있습니까?
예, 한 가지 이유는 코드를 단순하게 유지하는 것입니다. 내 문이 경우 object == null
명확하고 잘 알려져있다. 예를 들어 오타가 있으면 오작동으로 이어질 수 없습니다.
내 이해는 Objects.isNull ()이 두 번째 =를 생략하여 실수로 객체에 null 값을 할당 할 가능성을 제거한다는 것입니다.
이 경우 if (object = null) {}
에 생략 =
이 컴파일되지 않습니다거나 경우에 경고를 생성합니다 Boolean
물체! 실제로 if 문 내에서 Objects.isNull(object)
over 사용할 이유가 없습니다 . 다음은 두 가지 변형입니다.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)로 사용하기 위해 존재합니다.
따라서이 메서드를 술어가 아닌 것으로 사용하면 실제로 간단한 .NET에 비해 더 복잡하고 성가신 표현식을 사용하는 것 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)
... 일관