Я узнал, что в 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
статический блок