मैं अपने codebase में एक बग का सामना किया है में टाइप है, मैं क्या इस व्यवहार की वजह से अधिक संकीर्ण है। पहला टेस्ट केस विफल रहता है, जबकि अंतिम दो सफल होते हैं।अशक्त जावा
@Test
public void testBooleanNull1() {
Boolean nullB = null;
assertFalse(Boolean.valueOf(nullB));
}
@Test
public void testBooleanNull2() {
String nullS = null;
assertFalse(Boolean.valueOf(nullS));
}
@Test
public void testBooleanNull3() {
assertFalse(Boolean.valueOf(null));
}
मुझे पता है कि Boolean.valueOf
दो वेरिएंट के साथ एक ओवरलोड विधि एक एक String
लेता है और अन्य प्रकार boolean
की एक आदिम लेता है।
मुझे लगता है कि यह स्वत: मुक्केबाजी की वजह से हो रहा है, लेकिन मुझे लगता है कि यदि यह मामला है यकीन नहीं है, इसके अलावा मैं क्यों null
एक Boolean
करने के लिए परिवर्तित किया जा रहा है पता नहीं है के रूप में तक मुझे पता है null
एक नहीं है मान्य primitive
प्रकार।
मैं Apache Commons
से उपयोग करने के लिए आगे बढ़ गया हूं, मैंने यह बेहतर तरीके से समझने के लिए कहा कि व्यवहार इस तरह क्यों है।
यह भी देखें http://stackoverflow.com/questions/2707322/what-is-null-in-java – cymatist