Инициализация статических полей final в Java

public class Main {
 static final int alex=getc();
 static final int alex1=Integer.parseInt("10");
 static final int alex2=getc();

public static int getc(){
    return alex1;
}

public static void main(String[] args) {
    final Main m = new Main();
    System.out.println(alex+" "+alex1 +" "+alex2);
  } 
}

Кто-нибудь может сказать мне, почему это печатает: 0 10 10 ? Я понимаю, что это статическая конечная переменная, и ее значение не должно изменяться, но немного сложно понять, как компилятор инициализирует поля.

6
задан Mr_and_Mrs_D 6 October 2013 в 13:35
поделиться