perché java non consente dichiarazioni statiche con un blocco di inizializzazione statico in una classe interna non statica?Perché non si può usare un blocco di inizializzazione per una variabile statica in una classe interna?
nel seguente codice, outer2 funzionerà e inner2 non lo farà, nonostante faccia la stessa cosa. qualche idea? Non sto cercando una soluzione alternativa, sto solo cercando di capire perché java non riesce a farlo.
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";
}
}
}
modifica: nota che inner1
funzionerà correttamente. non è che java proibisca le vars statiche nelle classi interne, semplicemente vieta le dichiarazioni di esse.
Perché le classi interne non possono avere 'membri static' non definitivi, e' static {} 'è un membro statico. Può essere? –
Java proibisce le variabili non costanti nelle classi interne. 'inner1' è una variabile costante. 'inner2' non lo è. –