2009-03-04 9 views
10

मुझे चार चर मिल गए हैं और मैं यह जांचना चाहता हूं कि उनमें से कोई भी शून्य है या नहीं। मैंक्या जावा या अपाचे कॉमन्स में एक varargs शून्य जांच फ़ंक्शन है?

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

लेकिन क्या मैं वास्तव में चाहते हैं

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

है क्या कर सकते हैं, लेकिन मैं इसे अपने आप को लिखने के लिए नहीं करना चाहती। क्या यह फ़ंक्शन किसी भी सामान्य जावा लाइब्रेरी में मौजूद है? मैंने कॉमन्स लैंग की जांच की और इसे नहीं देखा। किसी भी तर्क लेने के लिए इसे varargs का उपयोग करना चाहिए।

उत्तर

10

सबसे अच्छा आप जावा पुस्तकालय के साथ कर सकते है, मुझे लगता है:

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

java.util.Arrays.asList के स्थिर आयात के साथ, मुझे लगता है? –

+0

हां। आपको इसे किसी भी तरह आयात करना होगा। यद्यपि यह धोखाधड़ी का थोड़ा सा है ... –

+0

साक्षर प्रोग्रामिंग के करीब – OscarRyz

18

मैं अगर यह कॉमन्स में नहीं जानता, लेकिन यह लिखने के बारे में दस सेकंड लेता:

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

हाँ मुझे पता है लेकिन फिर सवाल यह है कि इदर रखना। ;) –

+1

क्या आपके पास कुछ प्रकार की यूटिलिटी क्लास है? ऐसा लगता है जैसे मैं हमेशा एक के साथ समाप्त होता हूं। –

+0

हाँ, यह कॉमन्स लैंग, कॉमन्स आईओ, कॉमन्स कलेक्शन इत्यादि है ... –

4

आप टिप्पणी में पूछा जहां स्थिर सहायक डाल करने के लिए, मेरा सुझाव है

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

और फिर कॉल के लिए योग्य नाम का उपयोग, सफलता

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

एक ही रूप में h फिर एक वर्ग Any और isNull तरह के तरीकों के साथ किया जा सकता है।

+0

मुझे यह विचार बहुत पसंद है। –

1

जावा 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)) { ... } 
संबंधित मुद्दे