Aşağıdaki koda bakıyorum ve biraz tuhaf bir şey buldum:
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" ile bir yöntem bildirimine ait olmadığından, bunun bir derleme hatası vermesini beklerdim { }
. Bu neden geçerlidir? Bu kodun nasıl çağrılacağını veya çağrılması gerektiğini anlamıyorum.
Bunu çalıştırırken de üretir x y c g
, neden static { }
sıra oluşturucusundan önce çağrılır?