반응형
프로젝트 진행 중 intellij에서 StringUtils.isEmpty()
를 사용하는 곳에 노란색 경고와 hasLength(String)
나 hasText(String)
를 대신 사용하라는 메시지가 나와서 두 메서드의 차이점을 찾아봤다.
StringUtils
- 스프링 프레임워크에서 제공하는 문자열 처리 유틸리티 클래스
org.springframework.util
패키지에 포함되어 있으며, 문자열 검사, 변환, 조작, 비교 등의 문자열 처리 관련 메서드를 가진 유틸리티 클래스이다.isEmpty()
는 5.3 버전부터 deperecated되기 때문에hasLength()
나hasText()
사용을 권장한다.- 두 메서드는 비슷한 역할을 하지만 코드를 보면 차이점이 있다.
- 빈 문자열인지 확인이 필요할 경우
hasText()
를 사용해야한다.
- 빈 문자열인지 확인이 필요할 경우
코드 비교
public static boolean hasLength(@Nullable String str) {
return (str != null && !str.isEmpty());
}
// String.isEmpty()
public boolean isEmpty() {
return value.length == 0;
}
public static boolean hasText(@Nullable String str) {
return (str != null && !str.isBlank());
}
// String.isBlack()
public boolean isBlank() {
return indexOfNonWhitespace() == length();
}
- 두 메서드 모두 공통적으로 null인지 확인한다.
- hasLength는 isEmpty로 길이를 확인하는 반면 hasText는 isBlank로 빈 문자열 여부를 확인한다.
@Test
public void TestHasLength() {
String textString = "abc";
String blankString = " ";
String emptyString = "";
String nullString = null;
assertTrue(StringUtils.hasLength(textString));
assertTrue(StringUtils.hasLength(blankString));
assertFalse(StringUtils.hasLength(emptyString));
assertFalse(StringUtils.hasLength(nullString));
}
@Test
public void TestHasText() {
String textString = "abc";
String blankString = " ";
String emptyString = "";
String nullString = null;
assertTrue(StringUtils.hasText(textString));
assertFalse(StringUtils.hasText(blankString));
assertFalse(StringUtils.hasText(emptyString));
assertFalse(StringUtils.hasText(nullString));
}
- 공백으로만 이루어진 문자열도 허용하지 않기 위해서는 hasText를 사용해야한다.
반응형