Il seguente codice è il caso di riferimento legale avanti? se sì perché?Java Legal Forward Referencing
public class MyClass
{
private static int x = getValue();
private static int y = 5;
private static int getValue()
{
return y;
}
public static void main(String[] args)
{
System.out.println(x);
}
}
Che cosa accadrebbe se quelle non fossero variabili statiche e metodo? – Vibhor
Credo che il comportamento sia lo stesso: l'inizializzazione sta prima impostando tutto sul valore predefinito, quindi inizializzando ciascuno con il valore specificato, quindi chiamando il costruttore. – templatetypedef
Quale, btw, è una delle ragioni per cui non si dovrebbe mai chiamare un metodo non final (o privato) da un costruttore; è troppo facile per qualcuno scavalcare quel metodo e vedere "questo" non ancora costruito, fino al punto di vedere un campo finale non inizializzato. – yshavit