c# - क्या सी#में शून्य कोलेसिंग ऑपरेटर(??) के बराबर जावा है?




java equivalent (4)

इस प्रश्न का उत्तर यहां दिया गया है:

संभावित डुप्लिकेट:
जावा में पहला गैर-शून्य मूल्य कैसे प्राप्त करें?

क्या जावा में निम्न कोड के समान कुछ करना संभव है

int y = x ?? -1;

के बारे में अधिक ??


जावा में Primitives कभी शून्य नहीं हो सकता है, तो कथन अवधारणा को समझ में नहीं आता है। हालांकि, रैपर वर्ग (इंटीजर, कैरेक्टर इत्यादि), साथ ही साथ कोई अन्य तत्काल वर्ग शून्य हो सकता है।

उस तथ्य के अलावा, एक नल कोलेसिंग ऑपरेटर के लिए कोई शॉर्ट-हाथ वाक्यविन्यास नहीं है। आपको विस्तारित फॉर्म का उपयोग करना होगा।


दुख की बात है नहीं। निकटतम आप कर सकते हैं:

int y = (x != null) ? x : -1;

बेशक, यदि आप की आवश्यकता महसूस होती है (यह लंबाई पर कटौती करने की संभावना नहीं है), लेकिन सिंटैक्स स्तर पर कुछ और संक्षिप्त उपलब्ध नहीं है, तो आप इसे लाइब्रेरी विधियों में लपेट सकते हैं।


संक्षिप्त उत्तर: नहीं

सबसे अच्छा आप एक स्थिर उपयोगिता विधि बनाने के लिए कर सकते हैं (ताकि import static सिंटैक्स का उपयोग करके इसे import static किया जा सके)

public static <T> T coalesce(T one, T two)
{
    return one != null ? one : two;
}

उपर्युक्त firstNonNull के विधि के बराबर है, जो कि firstNonNull द्वारा पहले नहीं है, लेकिन इसे सामान्य रूप से अधिक बढ़ाया जा सकता है

public static <T> T coalesce(T... params)
{
    for (T param : params)
        if (param != null)
            return param;
    return null;
}

ObjectUtils.firstNonNull(T...) , अपाचे कॉमन्स लैंग 3 से एक और विकल्प है। मैं गुवा के विपरीत इस becuase पसंद करते हैं, यह विधि एक Exception फेंक नहीं है। यह बस null वापस आ जाएगा;





equivalent