아시다시피 java.util.Objects
입니다
이 클래스는 개체에서 작동하기위한 정적 유틸리티 메서드로 구성됩니다.
이러한 방법 중 하나는 Objects.isNull()
.
내 이해는 Objects.isNull()
두 번째를 생략하여 실수로 null 값을 객체에 할당 할 가능성을 제거 한다는 것 =
입니다.
그러나 API Note는 다음과 같이 설명합니다.
이 메서드는 조건 자, filter (Objects :: isNull)로 사용하기 위해 존재합니다.
내가 사용해야하는 어떤 이유 / 상황이있을 것 object == null
이상 Objects.isNull()
에 if 문 ?
Objects.isNull()
술어에만 국한 되어야합니까 ?
답변
if 문에서 Objects.isNull ()보다 object == null을 사용해야합니까?
당신이 보면 소스 코드 의 IsNull
방법,
/* Returns true if the provided reference is null otherwise returns false.*/
public static boolean isNull(Object obj) {
return obj == null;
}
동일합니다. 다른 점이 없다. 따라서 안전하게 사용할 수 있습니다.
답변
Objects.isNull
Java 8 람다 필터링 내에서 사용하기위한 것입니다.
작성하는 것이 훨씬 쉽고 명확합니다.
.stream().filter(Objects::isNull)
쓰는 것보다 :
.stream().filter(x -> x == null).
if
그러나 성명 내 에서는 둘 다 작동합니다. 를 사용 == null
하면 읽기가 더 쉬울 수 있지만 결국에는 선호하는 스타일로 귀결 될 것입니다.
답변
출처를보십시오 :
public static boolean isNull(Object obj) {
return obj == null;
}
null
값 을 확인하려면 다음을 사용할 수 있습니다.
Objects.isNull(myObject)
null == myObject // avoids assigning by typo
myObject == null // risk of typo
사실 Objects.isNull
에 대한 의미 Predicate
의 위로 사용하지 못하도록하지 않습니다.
답변
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);
// As ready-made predicate
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
// Lambda
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
// Reimplement the Objects::isNull predicate
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
답변
의미 상 차이는 없지만 가독성을 위해 다음을 선호합니다 whatever == null
.
import static java.util.Objects.isNull;
// Other stuff...
if(isNull(whatever)) {
}