[Java] 자바 Null 체크, 빈 값("") 체크
Java

[Java] 자바 Null 체크, 빈 값("") 체크

728x90

데이터 값을 받아올 때 가장 쉽게 마주할 수 있는 오류는 NullPointerException(NPE) 이다 .

 

보통 객체 값이 null이거나 초기화가 안되어있는 인스턴스를 사용하면서 NPE를 마주하게 된다. 

 

- null 객체에서 method를 호출하는 경우

- null 객체의 필드에 접근하거나 값을 변경하는 경우

- null 의 길이를 배열처럼 취하는 경우

- null 을 throw 하는 경우

- null 을 통해 동기화 할 경우

public class Sample {
    public static void main(String[] args) {
        Go go = null;
        
        go.toString(); // NullPointerException
        go.equals(""); // NullPointerException
        go.length(); // NullPointerException
        go.name; // NullPointerException
    }
}

이러한 오류를 피하기 위해 항상 Null 체크가 필요하다.

 

간단하게 다음과 같이 할 수 있다.

if (param != null) {
	//do something
}

Null 값을 체크하는 것도 중요하지만, 비어있는 String 값("")이 들어가있는 경우를 체크해야하는 경우도 있다.

 

1. 앞 조건에서 null 체크 후에 빈 값을 체크

if (param != null && !param.equals("")){
	// do something
}

if (param != null && param.length() != 0){
	// do something
}

 

2. Spring 에서 String 값을 validate 하고싶으면 StringUtils를 이용하면 된다.

import org.springframework.util.StringUtils;

if (StringUtils.hasText(sample)){
	// do something
}

 

StringUtils 클래스의 hasText 함수는 null, 빈값, whitespace 로만 이루어져있는 String 을 모두 체크한다

public static boolean hasText(@Nullable String str) {
    return str != null && !str.isEmpty() && containsText(str);
}
728x90