नोट: मुझे अच्छी तरह से पता है कि इसे प्रारंभ करने से समस्या ठीक हो जाती है; मैंने अभी माना है कि संकलक निष्पादन पथ का पालन करेगा और देखें कि वास्तव में उस बिंदु पर foo प्रारंभ किया जाएगा जहां यह सुझाव देता है कि यह 'हो सकता है' नहीं।जावा प्रारंभिकता के साथ अप्रत्याशित व्यवहार
मेरी प्रारंभिक धारणा यह होगी कि यदि लंबाई 3 से अधिक नहीं थी, तो मुझे इसका उपयोग करने के लिए स्मृति आवंटित करने की आवश्यकता नहीं होगी।
यह उत्पादन में कभी नहीं इस्तेमाल किया जाएगा, मैं बस उत्सुक
निम्न उदाहरण देखें हूँ: -
List<String> foo;
int length = 5;
if (length > 3)
{
foo = new ArrayList<String>();
}
if (length > 4)
{
foo.add("bar");
}
ऐसा क्यों खड़ी कर रहा है प्रदर्शित करने के लिए निम्नलिखित?
स्थानीय चर foo आरंभ नहीं हो सकता है किया गया
निश्चित रूप से शाखाओं के बाद, वहाँ एक मामले जिससे foo प्रारंभ नहीं किया गया है कभी नहीं है। मुझे पता है कि अगर मैं करना चाहता था: -
List<String> foo = null;
कोई संकलन समस्या नहीं होगी, लेकिन मुझे ऐसा करने की आवश्यकता क्यों है?
@down voter, क्या आप कम से कम एक कारण प्रदान कर सकते हैं? – chrisw