Java에서 대문자 Double은 null 일 수 있습니다.두배로 동등성 검사
그러나 나는 복식 a
및 b
이 있다면 나는이 작업을 수행 :
if (a.equals(b))
그 중 하나가 null의 경우는 충돌합니다. 그들을 비교할 수있는 더 좋은 방법이 있습니까?
Java에서 대문자 Double은 null 일 수 있습니다.두배로 동등성 검사
그러나 나는 복식 a
및 b
이 있다면 나는이 작업을 수행 :
if (a.equals(b))
그 중 하나가 null의 경우는 충돌합니다. 그들을 비교할 수있는 더 좋은 방법이 있습니까?
자바 7+에서 가장 간단한 방법은 다음과 같습니다
Objects.equals(a, b)
자바의 이전 버전을 사용하는 경우, 당신은 조건 연산자를 사용할 수 있습니다 :
(a != null) ? a.equals(b) : (b == null)
내 자신의 명확성을 위해 마지막 문장을 크게 읽음 :'a.equals (b)'가 작동하려면'a'는 null이 아니어야합니다 (null.equals (b)와 같은 것이 없으므로). 그러나'a'가 null이면'b'가 null인지 단순히 확인합니다. – KaliMa
@KaliMa 맞습니다. '(b == null)'은'(a == b)'로 쓰여질 수도 있지만, 혼란 스럽다. –
사용
if (null != a && null != b && a.compareTo(b) == 0) {
// whatever goes here
}
이 정확하고 슬프게도 추가 널 검사를 추가해야합니다. 그래서 당신도
if ((a != null && a.equals(b)) || (a == null && b == null))
를 작성해야하거나 코드는 null
값을 허용하지 않아야합니다.
올바르지 않습니다. 'a! = null && a.equals (b)'가 필요합니다. 앤디가 편집했습니다. –
감사합니다. – wolle
간단한 방법이 될 수있다 :
이boolean c = (a != null && b != null) ? a.equals(b) : false;
if (c){
...
}
'Objects.equals (a, b)'. –
"둘 중 하나가 null 인 경우 충돌합니다."특히 a가 null이면 충돌합니다. 'b'에 대해서는 중요하지 않습니다. –
Java 7부터 @AndyTurner'Objects.equals'. 그렇지 않으면 좋은 오래된'null' 검사. – Mena