IT이야기

Java에서 null 및 빈 컬렉션을 검증하는 모범 사례

cyworld 2022. 4. 19. 21:41
반응형

Java에서 null 및 빈 컬렉션을 검증하는 모범 사례

컬렉션이 비어 있는지 확인하고 싶다.null누가 나에게 가장 좋은 방법을 알려줄 수 있니?

현재 아래와 같이 확인하고 있다.

if (null == sampleMap || sampleMap.isEmpty()) {
  // do something
} 
else {
  // do something else
}

프로젝트에서 Apache Commons Collections 라이브러리를 사용하는 경우CollectionUtils.isEmpty그리고MapUtils.isEmpty()수집 또는 지도가 비어 있는지 또는 null인지 각각 확인하는 방법(즉, "안전함").

이러한 방법 뒤에 숨겨진 코드는 사용자 @icza가 그의 대답에 써 놓은 것에 가깝다.

여러분이 무엇을 하든지 간에, 여러분이 적은 코드를 쓸수록, 코드의 복잡성이 감소함에 따라 더 적은 코드를 테스트할 필요가 있다는 것을 기억하라.

그것이 그것을 확인하는 가장 좋은 방법이다.도우미 방법을 작성하여 다음 작업을 수행하십시오.

public static boolean isNullOrEmpty( final Collection< ? > c ) {
    return c == null || c.isEmpty();
}

public static boolean isNullOrEmpty( final Map< ?, ? > m ) {
    return m == null || m.isEmpty();
}

Spring 프레임워크를 사용하면CollectionUtils두 컬렉션(목록, 배열) 및 지도 등에 대해 모두 확인하십시오.

if(CollectionUtils.isEmpty(...)) {...}

개인적으로, 나는 그보다는 빈 컬렉션을 사용하는 것을 선호한다.null알고리즘에 대해 수집이 비어 있는지 여부에 상관없는 방식으로 알고리즘을 작동시키도록 한다.

당신이 봄을 사용할 때 당신은 사용할 수 있다.

boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);

여기서 obj는 임의의 [지도, 위치, 배열, 모든 것...]이다.

그렇지 않은 경우: 코드:

public static boolean isEmpty(Object[] array) {
    return (array == null || array.length == 0);
}

public static boolean isEmpty(Object obj) {
    if (obj == null) {
        return true;
    }

    if (obj.getClass().isArray()) {
        return Array.getLength(obj) == 0;
    }
    if (obj instanceof CharSequence) {
        return ((CharSequence) obj).length() == 0;
    }
    if (obj instanceof Collection) {
        return ((Collection) obj).isEmpty();
    }
    if (obj instanceof Map) {
        return ((Map) obj).isEmpty();
    }

    // else
    return false;
}

문자열이 가장 좋은 경우:

boolean isNullOrEmpty = (str==null || str.trim().isEmpty());

컬렉션 개체가 비어 있는지, null인지 여부를 확인하십시오.아래에 제시된 이 모든 방법은 org.properties.properties.properties.properties4에 존재한다.CollectionUtils 패키지.

목록 또는 컬렉션 개체 유형을 선택하십시오.

CollectionUtils.isEmpty(listObject);
CollectionUtils.isNotEmpty(listObject);

Map type of Objects를 확인하십시오.

MapUtils.isEmpty(mapObject);
MapUtils.isNotEmpty(mapObject);

모든 방법의 반환 유형은 부울이다.

사용할 수 있다org.apache.commons.lang.Validate의 "NotTempty" 방법:

Validate.notEmpty(myCollection)-> 지정된 인수 집합이 null도 아니고 0(원소 없음)도 아닌지 검증한다. 그렇지 않으면 예외를 둔다.

만약 당신이 null을 확인할 필요가 있다면, 그것이 방법이다.그러나 이 기능을 제어할 수 있는 경우 언제든지 빈 컬렉션을 반환하고 나중에 빈 컬렉션만 확인하십시오.

이 실은 C#과 거의 같은 것이지만, 원칙은 자바에게도 똑같이 잘 적용된다.거기서 언급했듯이, null은 오직 다음과 같은 경우에만 반환되어야 한다.

  • null은 좀 더 구체적인 것을 의미할 수 있다.
  • API(계약)가 null을 반환하도록 강제할 수 있음.

지도 사용을 포함한 모든 컬렉션의 경우:isEmpty이 수집 객체에 존재하는 방법그러나 다음 전에 무효 검사를 수행해야 한다.

Map<String, String> map;

........
if(map!=null && !map.isEmpty())
......

참조URL: https://stackoverflow.com/questions/12721076/best-practice-to-validate-null-and-empty-collection-in-java

반응형