首页 > 解决方案 > 为什么它会运行?

问题描述

enum Color {
    RED, GREEN, BLUE;

    // 构造函数
    private Color() {
        System.out.println("Constructor called for : " + this.toString());
    }

    public void colorInfo() {
        System.out.println("Universal Color");
    }
}
public class NumTest {
    // 输出
    public static void main(String[] args) {
        Color c1 = Color.RED;
        System.out.println(c1);
        c1.colorInfo();
    }
}

我以为运行的结果是“Constructor called for :RED” 为什么构造函数被调用了3次?</p>

标签: java

解决方案


一旦类初始化,枚举常量就会全部初始化——只要有Color. 所以所有三个, RED, GREEN, BLUE, 都被构造了。

请参阅Java 语言规范第 8.9 章枚举类


推荐阅读