2009-03-04 20 views
10

Dört değişkenim var ve bunlardan herhangi birinin boş olup olmadığını kontrol etmek istiyorum. BenJava veya Apache Commons'ta varargs boş kontrol işlevi var mı?

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

ama ne gerçekten istiyorum

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

olduğunu yapabilir ama kendim yazmak istemiyorum. Bu işlev herhangi bir genel Java kütüphanesinde var mı? Commons Lang'ı kontrol ettim ve görmedim. Herhangi bir sayıda argümanı almak için varargs kullanmalıdır.

cevap

10

Java kütüphanesi ile yapabileceğiniz en iyi, sanırım edilir:

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

java.util.Arrays.asList statik bir içe aktarma ile, ben varsayım? –

+0

Evet. Onu bir yere almalısın. Bir hile olmasına rağmen, –

+0

okuryazarlık programlamasına yakın – OscarRyz

18

o-malı olarak eğer bilmiyorum ama yazmak için yaklaşık on saniye sürer:

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

Evet biliyorum ama sonra soru koymak. ;) –

+1

Bir çeşit yardımcı program sınıfınız var mı? Sanki her zaman bir tane gibi görünüyor. –

+0

Evet, Commons Lang, Commons IO, Commons Koleksiyonlar, vb ... –

4

statik yardımcı nereye koyacağını, ben

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

ve ardından arama için nitelikli adını kullanmak önermek yorumlarında istedi suc

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

aynı şekilde h sonra isNull gibi bir sınıf Any ve yöntemlerle yapılabilir.

+0

Bu fikri çok beğeniyorum. –

1

daha da zarif bir şekilde yapabiliriz Java 8'de:

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

veya bir yönteme ayıklayabileceğiniz:

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

ve sonra gibi kodunuzda kullanabilirsiniz Bu:

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