मैं नीचे दिए गए कोड को देख रहा हूँ और मुझे कुछ अजीब सा लगा:
public class Sequence {
Sequence() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}
मुझे उम्मीद है कि यह एक संकलन त्रुटि देने के System.out
साथ होगा क्योंकि "y" एक विधि घोषणा से संबंधित नहीं है { }
। यह क्यों मान्य है? मैं नहीं देखता कि यह कोड कैसे होना चाहिए या कहा जाना चाहिए।
जब यह चल रहा है तो यह x y c g
भी पैदा करता है static { }
, अनुक्रम निर्माता से पहले क्यों बुलाया जाता है?