ठीक है, मैं इस तरह के एक कोड मिल गया है:जब कक्षाएं लोड की जाती हैं?
public class Main {
public static void main(String[] args) {
Test t; //1
Integer i = new Integer(1); //2
t = new Test(); //3
System.out.println(Test4.a); //4
}
}
class Test {
private int a = 10;
private Test2 t2; //5
List<Test2> list = new ArrayList<Test2>() {
{
for (int i = 0; i < a; i++) {
add(new Test2()); //6
}
}
};
}
class Test2 extends Test3{
}
class Test3 {
}
class Test4 {
public static final int a = 4;
}
मैं कैसे (पूरी तरह या आंशिक) और जब कक्षाओं लोड किए गए हैं पता नहीं है। तो:
Test t;
- यह एक सक्रिय उपयोग नहीं है, लेकिन संदर्भt
की एक निश्चित प्रकार होना चाहिए। टेस्ट क्लास लोड किया गया था (शायद आंशिक रूप से, फिर कितने चरण - लोडिंग \ लिंकिंग \ प्रारंभ करना - यह पारित हुआ) या कुछ भी नहीं हुआ?Integer i = new Integer(1);
- जेवीएम शुरू होने पर या इस लाइन पर इंटीजर लोड किया गया था?t = new Test();
- एक सक्रिय उपयोग। क्या यह शुरुआत से या किसी बिंदु से पूरी तरह से लोड किया गया था (देखें 1)System.out.println(Test4.a);
-Test4
लोड किया गया था या नहीं?Test2
औरTest3
लोड या नहीं थे? यदि हां तो कब?
यह नोट करना कि प्रारंभ करना लोडिंग (या लिंकिंग) जैसा नहीं है। –
यदि ** टेस्ट ** कक्षा लाइन (1) पर लोड नहीं होती है तो किस प्रकार परिवर्तनीय ** टी ** होगा? –
JVM में, चर 't' अभी तक मौजूद नहीं होगा; यह अभी तक आवंटित नहीं है। – rgettman