Integer는 null 입력이 가능하다.

 

Integer 변수에 null이 입력되었을 경우

if문으로 숫자와 비교했을 때 바른 문법이라고 생각했다.

그러나, Integer에 null이 입력했을 경우 숫자와 비교했을 때 아래와 같은 에러가 발생하였다.

습관적으로

NullPointerException이 발생하여 num1에 null이 입력되어 발생하는 줄로만 인식하였다.

그렇다면, 처음 변수 선언하는곳에서 에러가 발생해야 하는게 아닌가?

Integer 변수에 null이 입력되어 발생하는게 아니라,

null과 정수(int 자료형)를 비교하려고 하기 때문에 발생하는 에러였다.

 

아래를 살펴보자.

정수와 null을 비교해보자. 아예 int와 null 타입자체를 비교할 수 없다고 에러가 발생한다.

 

 

 

습관은 무서운 것이다.

항상, 한 발 물러서서 접근하는 자세가 필요하다.

 

공통 메서드 중 가장많이 사용하는 isEmpty 메서드를 소개한다.

 

null or not null 을 먼저 판별한 후

 

각 어떤 클래스인지 instanceof로 판단 뒤 각 클래스에 선언된 메서드를 이용하여 판별한다.

 

Java isEmpty 메서드

/**
 * obj가 null 혹은 비어있는지 비교
 * 
 * @params Object obj
 * @return boolean
 * @apiNote Custom.isEmpty(obj)
 *
 */
public static boolean isEmpty(Object obj){
    // null 이라면
    if (obj == null)
        return true;

    // String 이라면
    if (obj instanceof String)
        return ("".equals(((String) obj).trim()));

    // Map이라면
    if (obj instanceof Map)
        return ((Map<?,?>) obj).isEmpty();

    // List라면
    if (obj instanceof List)
        return ((List<?>) obj).isEmpty();

    // Object 배열이라면..
    if (obj instanceof Object[])
        return (((Object[]) obj).length == 0);

    return false;
}

 

+ Recent posts