[Java] String을 Null Safe하게 비교하기
2022. 4. 5. 23:45
반응형
nullable한 두 개의 String의 equality 비교를 어떻게 null safe하게 할 수 있을까?
java.util.Objects.equals(Object, Object)
Java7부터 java.utils.Objects의 static 메서드 equals(Object, Object)를 사용할 수 있다. 이 메서드는 둘다 null이면 true를, 둘 중 하다가 null이면 false를, 그렇지 않으면 equals의 결과를 리턴한다.
nullable한 객체에서 메소드를 호출하는게 아니라 static 메소드이므로 NullPointerException의 발생 가능성이 없고 별도의 라이브러리를 추가할 필요가 없다는 장점이 있다.
public final class Objects {
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
}
StringUtils.equals(CharSequence, CharSequence) - Apache Commons
다른 방법으로는 apache commons 라이브러리의 StringUtils가 제공하는 static 메소드 equals()를 사용할 수 있다.
public class StringUtils {
public static boolean equals(CharSequence cs1, CharSequence cs2) {
if (cs1 == cs2) {
return true;
} else if (cs1 != null && cs2 != null) {
if (cs1 instanceof String && cs2 instanceof String) {
return cs1.equals(cs2);
} else {
return cs1.length() == cs2.length() && CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, cs1.length());
}
} else {
return false;
}
}
}
이를 사용하려면 apache commons 라이브러리 의존성을 추가해야한다.
728x90
반응형
'programming language > Java' 카테고리의 다른 글
[Java] DTO(Data Transfer Object) vs VO(Value Object) (0) | 2022.04.14 |
---|---|
[Java] Map 보다 DTO 클래스를 사용해야 하는 이유 (0) | 2022.04.07 |
[Java] 파일 복사 File copy (0) | 2022.03.11 |
[Java] Wrapper 클래스 (0) | 2020.04.30 |
[Java] String str = ""; vs String str = new String(""); / 상수 영역과 힙 영역/ Java에서 new 연산자와 리터럴의 차이점 (0) | 2020.03.18 |
Written by ner.o
개발자 네로의 개발 일기,
자바를 좋아합니다 !
댓글 개