枚举 - 静态和实例块

9 浏览
0 Comments

枚举 - 静态和实例块

我了解到在Java中,静态块在类初始化时执行,实例块在每个类实例的构建之前执行。我一直看到静态块在实例块之前执行。为什么对于enums来说情况相反呢?

有人可以解释一下这段示例代码的输出吗:

enum CoffeeSize {
    BIG(8), LARGE(10),HUGE(12),OVERWHELMING();
    private int ounces ;
    static {
        System.out.println("静态块");
    }
    {
        System.out.println("实例块");
    }
    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

静态块

0