2012-02-23 14 views
16

संभव डुप्लिकेट:
Tricky ternary operator in Java - autoboxingजावा अशक्त सशर्त ऑपरेटर मुद्दा int करने के लिए

हम जानते हैं कि int roomCode = null; संकलक द्वारा अनुमति नहीं है।

फिर कोड 2 एक संकलक त्रुटि क्यों नहीं देता है, जब कोड 2 करता है।

कोड 1:

int roomCode = (childCount == 0) ? 100 : null; 

कोड 2:

int roomCode = 0; 
if(childCount == 0) roomCode = 100; 
else roomCode = null; // Type mismatch: cannot convert from null to int 
+1

एक बहुत अच्छा सवाल है। –

+1

शायद ऑटोबॉक्सिंग से संबंधित है लेकिन मुझे नहीं लगता कि कैसे ... – talnicolas

+0

उस पथ को लेने पर 'शून्य' का मूल्यांकन क्या होता है? – Mysticial

उत्तर

11

मैं एक छोटे से डिबगिंग किया और कहा कि पता चला जब

(childCount == 0) ? 100 : null; 

कार्यक्रम के मूल्यांकन के पूर्णांक की विधि valueOf कॉल null का मूल्यांकन करने के लिए। यह एक इंटीजर देता है और एक इंटीजर शून्य (और एक int नहीं) हो सकता है, यह संकलित करता है। जैसे कि आप कुछ ऐसा कर रहे थे:

int roomCode = new Integer(null); 

तो यह ऑटोबॉक्सिंग से संबंधित है।

+0

बहुत अच्छा जवाब !!! – Deepak

संबंधित मुद्दे