यह मुझे लगता है कि जावा purists के लिए एक है। मुझे हाल ही में एक बूलियन को स्ट्रिंग मानों का एक कस्टम पार्सिंग करने के लिए एक विधि के साथ एक मुद्दा था। एक साधारण पर्याप्त काम है, लेकिन किसी कारण अशक्त मामले में एक NullPointerException फेंकने विधि से नीचे था के लिए ...बुलीयन से NullPointerException
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
बूलियन तो क्यों या कैसे एक NullPointerException फेंकी जा सकती है विधि के लिए वापसी प्रकार किया जाता है? इसके माध्यम से डीबगिंग से ऐसा लगता है कि अपवाद को उस बिंदु पर फेंक दिया जा रहा है जहां नेस्टेड इन-लाइन सशर्त स्टेटमेंट शून्य के मूल्यांकन का मूल्यांकन करता है और बाहरी इन-लाइन सशर्त में वापस लौटाता है, लेकिन फिर मैं समझा नहीं सकता कि क्यों।
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
निम्नलिखित कोड दोनों के बीच आधे रास्ते है और यह भी काम करता है के रूप में उम्मीद:
अंततः मैं, के रूप में इस प्रकार है जो अपेक्षा के अनुरूप काम करता छोड़ दिया और विधि दुबारा लिखा
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}
+1 एक अच्छा "गूढ़ व्यक्ति" – NilsH
@NilsH +1 के लिए धन्यवाद, और समाधान के लिए! – Robin