2009-03-04 4 views
10

4 개의 변수가 있는데 그 중 하나가 null인지 확인하고 싶습니다. 나는Java 또는 Apache Commons에 varargs null check 기능이 있습니까?

if (null == a || null == b || null == c || null == d) { 
    ... 
} 

는하지만 내가 정말 원하는 것은

if (anyNull(a, b, c, d)) { 
    ... 
} 

하다 할 수 있지만 내가 직접 쓰고 싶지 않습니다. 이 함수는 일반적인 자바 라이브러리에 존재합니까? Commons Lang을 확인하고 보지 못했습니다. 여러 인수를 취하려면 varargs를 사용해야합니다.

답변

10

당신이 자바 라이브러리와 함께 할 수있는 최선은, 내가 생각된다

if (asList(a, b, c, d).contains(null)) { 
+1

java.util.Arrays.asList의 정적 가져 오기를 사용한다고 가정합니까? –

+0

예. 당신은 그것을 어쨌든 가져와야합니다. ... –

+0

문법 프로그래밍에 가까움 – OscarRyz

18

는 공유지에 있는지 모르겠어요하지만 작성하는 약 10 초 정도 걸립니다 :

public static boolean anyNull(Object... objs) { 
    for (Object obj : objs) 
     if (obj == null) 
      return true; 
    return false; 
} 
+0

그래, 그렇다면 질문은 어디에 그것을 넣어. ;) –

+1

유틸리티 클래스가 있습니까? 나는 항상 1로 끝나는 것처럼 보인다. –

+0

그래, Commons Lang, Commons IO, Commons Collections 등등 ... –

4

당신은 정적 도우미를 넣어 어디에, 내가

public class All { 
    public static final boolean notNull(Object... all) { ... } 
} 

다음 통화에 대한 정규화 된 이름을 사용하는 것이 좋습니다 코멘트에 요청, SUC

assert All.notNull(a, b, c, d); 

과 동일 시간은 다음 isNull 같은 클래스 Any 및 방법으로 수행 할 수 있습니다.

+0

나는 그 생각을 아주 좋아한다. –

1

당신은 훨씬 더 우아한 방법으로 그것을 할 수있는 Java 8에서 :

if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... } 

하거나하는 방법으로 추출 할 수 있습니다 :

public static boolean anyNull(Object... objects) { 
    return Stream.of(objects).anyMatch(Objects::isNull); 
} 

다음과 같은 코드에서 사용 이 :

if (anyNull(a, b, c, d)) { ... }