निम्न स्निपेट सरल जावा कोड का उपयोग करता है।जावा में अज्ञात NullPointerException
package pkg;
final public class Main
{
final private class Demo
{
private Integer value = null;
public Integer getValue()
{
return value;
}
}
private Integer operations()
{
Demo demo = new Demo();
return demo==null?new Integer(1):demo.getValue();
}
public static void main(String[] args)
{
Main main=new Main();
System.out.println("Value = " + String.valueOf(main.operations()));
}
}
उपरोक्त कोड में कोई समस्या नहीं के साथ की उम्मीद के रूप में काम करता है और कंसोल पर Value = null
प्रदर्शित करता है।
निम्नलिखित return
बयान में
return demo==null?new Integer(1):demo.getValue();
वस्तु के बाद प्रकार Demo
की demo
नहींnull
, :
के बाद अभिव्यक्ति जो है demo.getValue()
निष्पादित किया जाता है जो आंतरिक Demo
वर्ग जो null
रिटर्न भीतर getValue()
का आह्वान है और अंत में, इसे स्ट्रिंग में परिवर्तित किया जाता है और कंसोल पर प्रदर्शित किया जाता है।
लेकिन जब मैं नीचे दिखाए गए जैसा operations()
विधि कुछ,
private Integer operations()
{
Demo demo = new Demo();
return demo==null?1:demo.getValue();
}
फेंक देता है NullPointerException
संशोधित करते हैं। कैसे?
मेरा मतलब है जब मैं इस return
बयान
return demo==null?new Integer(1):demo.getValue();
यह काम करता है का उपयोग
(NullPointerException
फेंक नहीं है) और जब मैं निम्नलिखित कुछ इसी तरहreturn
कथन का उपयोग
return demo==null?1:demo.getValue();
यह NullPointerException
का कारण बनता है। क्यूं कर?
http://stackoverflow.com/questions/7811608/java-npe-in-ternary-operator-with-autoboxing [autoboxing साथ अजीब जावा NullPointerException] (की –
संभव डुप्लिकेट http://stackoverflow.com/questions/ 3265948/अजीब-जावा-NullPointerException-साथ-autoboxing) – Pops