Neden java, statik olmayan bir iç sınıftaki statik başlatma bloğu ile statik bildirimlere izin vermiyor? Aşağıdaki kodda,Neden bir iç sınıftaki statik değişken için başlatıcı bloğu kullanamazsınız?
, dış2 çalışacak ve iç 2 aynı şeyi yapmasına rağmen olmaz. herhangi bir fikir? Bir geçici çözüm aramıyorum, sadece java'nın bunu neden başaramadığını anlamaya çalışıyorum.
public class WhyUNoStatic {
public static final String outer1 = "snth"; // ok
public static final String outer2; // ok
static
{
outer2 = "snth";
}
public class Inner {
public static final String inner1 = "snth"; // still ok!
public static final String inner2; // FAILURE TIME
static
{
inner2 = "snth";
}
}
}
düzenleme: inner1
iyi çalışır unutmayın. java'nın iç sınıflarda statik varlıkları yasakladığı değil, sadece açıklamalarını yasaklıyor.
Çünkü sınıf ve' ilan edebilir statik {} 'statik üyesidir. Olabilir? –
Java, iç sınıflarda sabit olmayan değişkenleri yasaklar. 'iç1' sabit bir değişkendir. 'inner2' değil. –