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