Java 표준 "둘 다 null 또는 같음"정적 메서드가 있습니까?


101

타이핑을 저장하고 코드를 명확히하기 위해 다음 메서드의 표준 버전이 있습니까?

public static boolean bothNullOrEqual(Object x, Object y) {
  return ( x == null ? y == null : x.equals(y) );
}

누군가 그런 것이 유용하다고 말할 수 있습니까?
anjanb

2
equals () 메서드에서 null 검사를 건너 뛸 수 있습니다.
Michael Myers

1
컬렉션을 구현하는 경우 .contains () 메서드는 "o"가 주어 졌을 때 "이 컬렉션에 (o == null? e == null? e == null : o.equals (e )). " 마찬가지로 .remove () 메서드는 이러한 요소를 제거해야합니다.
newacct

6
내 2 센트. 나는 다음을 사용한다 : public static boolean bothNullOrEqual (Object x, Object y) {return (x == y || (x! = null && x.equals (y))); } IMHO, 초보 프로그래머에게 더 읽기 쉽습니다.
m_vitaly

1
또 다른 사용 사례 : 값을 비교하여 더티 검사 중에 이전 값에서 변경되었는지 확인합니다.
Neromancer 2013

답변:


193

Java 7을 사용하면 이제 null safe equals를 직접 수행 할 수 있습니다.

Objects.equals (x, y)

(자카르타 공용 라이브러리 ObjectUtils.equals ()는 Java 7에서 더 이상 사용되지 않습니다.)


이 방법은 Google의 Dependency injection-libray Guice에서도 구현됩니다.
Niels

1
nullSafeEquals ObjectUtils 클래스에 : 봄도 유사한 방법 구현
jpsstavares

2
Google Guava에는 Objects.equals ()도 있습니다.
Spina

이것은 x를 고려하여 nullsafe입니다. y의 경우 주어진 객체의 등가 구현에 따라 다릅니다. (구현은 return (x == y) || (x != null && x.equals(y));)
emi-le

23

만약 당신이 Jakarta Commons 라이브러리에 접근 할 수 있다면 ObjectUtils.equals () 와 많은 다른 유용한 함수들이 있습니다.

편집 : 처음에 질문을 잘못 읽음


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.