Il seguente codice sottrae semplicemente un valore (10 in questo caso, solo per la dimostrazione) dell'anno corrente ottenuto utilizzando la classe java.util.Calendar
.Membri statici non inizializzati come previsto
public final class Test
{
private static final Test TEST = new Test();
private static final int YEAR = Calendar.getInstance().get(Calendar.YEAR);
private final int eval=YEAR - 10;
public static void main(String[] args)
{
System.out.println("Evaluation "+TEST.eval);
}
}
mi aspetto che questo codice per mostrare 2003 (anno in corso - 10), ma, invece, visualizza -10
. Presumo che la costante YEAR
non sia stata inizializzata. Perché succede in questo caso?
prova a cambiare l'ordine delle dichiarazioni di '' test' e YEAT'. –
@LouisWasserman anche se risolverà il suo problema - questo è un modo molto cattivo per comportarsi :) – alfasin
È davvero molto cattivo avere questo tipo di codice dipendente dagli ordini in primo luogo, francamente. –