Перечисляет -статические и экземплярные блоки

Я узнал, что в Java статический блок выполняется при инициализации класса, а блок экземпляра выполняется перед созданием каждого экземпляра класса. Я всегда видел, что статический блок выполняется перед блоком экземпляра. Почему для enumsобратная ситуация?

Может ли кто-нибудь объяснить мне вывод примера кода:

enum CoffeeSize {

    BIG(8), LARGE(10),HUGE(12),OVERWHELMING();
    private int ounces ;

    static {
        System.out.println("static block ");
    }
    {
        System.out.println("instance block");
    }

    private CoffeeSize(int ounces){
        this.ounces = ounces;
        System.out.println(ounces);
    }
    private CoffeeSize(){
        this.ounces = 20;
        System.out.println(ounces);
    }

    public int getOunces() {
        return ounces;
    }
} 

Выход:

блок экземпляра
8
блок экземпляра
10
блок экземпляра
12
блок экземпляра
20
статический блок

33
задан NINCOMPOOP 1 August 2013 в 07:50
поделиться