Language/Java

[Java] StringUtils의 hasLength()와 hasText()

덴마크초코우유 2024. 8. 26. 13:57
반응형

프로젝트 진행 중 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를 사용해야한다.
반응형