मैंने स्थिर प्रारंभिक में कुछ देखा जो जावैक में एक बग हो सकता है। मैंने एक परिदृश्य बनाया है जहां मैं चर को एक वैल्यू असाइन कर सकता हूं लेकिन उस मान को वापस नहीं पढ़ सकता।घोषणा प्रारंभ करने से पहले रखा गया स्टेटिक प्रारंभकर्ता त्रुटि
दो उदाहरण नीचे दिए गए हैं, पहले ठीक संकलित होते हैं, दूसरा टीएमपी से मूल्य पढ़ने की कोशिश करते समय त्रुटि प्राप्त करता है, लेकिन किसी कारण से टीएमपी के लिए मूल्य आवंटित करने की अनुमति है। मैं समझ सकता हूं कि क्या यह न तो पढ़ सकता है और न ही चर को लिख सकता है क्योंकि स्थिर प्रारंभकर्ता के बाद टीएमपी घोषित किया जाता है, लेकिन उनमें से केवल एक त्रुटि मुझे समझ में नहीं आती है।
//Compiles Successfully:
public class Script
{
public static Object tmp;
static
{
tmp = new Object();
System.out.println(tmp);
}
}
//error only on the read but not the assignment
public class Script
{
static
{
tmp = new Object();
System.out.println(tmp);
}
public static Object tmp;
}
बिंदु को आगे बढ़ाने के लिए, यह सफलतापूर्वक संकलित करता है।
public class Script
{
static
{
tmp = new Object();
}
public static Object tmp;
}
मेरा मानना है [एक समान प्रश्न का उत्तर] [1] इस सवाल का जवाब मैं जितना कर सकता हूं उससे बेहतर है। यह अजीब व्यवहार है लेकिन एक बग नहीं है। यह वह कर रहा है जो इसे करना है। [1]: http://stackoverflow.com/a/10035928/348975 – emory
मुझे यकीन नहीं है कि यह करता है, वैरिएबल प्रारंभकर्ता वेरिएबल को उनके डिफ़ॉल्ट मान से प्रारंभ करने के लिए होते हैं। जो स्थिर int v = 1 कहना है; स्थिर int v के बराबर है; स्थिर {v = 1;} –
@ ड्यूकलिंग मैंने अपनी टिप्पणी को एक उत्तर के रूप में लिखा और स्टैक ओवरव्लो ने निर्धारित किया कि मेरा जवाब छोटा था (मुझे लगता है कि इसका मतलब बहुत छोटा है) और स्वचालित रूप से इसे एक टिप्पणी में परिवर्तित कर दिया, लेकिन स्पष्ट रूप से लिंक को फ़्लब किया। – emory