为什么枚举构造函数不能在 Java 中受到保护或公开?

2022-08-31 12:22:19

整个问题都在标题中。例如:

enum enumTest {

        TYPE1(4.5, "string1"), TYPE2(2.79, "string2");
        double num;
        String st;

        enumTest(double num, String st) {
            this.num = num;
            this.st = st;
        }
    }

构造函数与默认或修饰符很好,但如果给定或修饰符,则会给我一个编译器错误。privatepublicprotected


答案 1

将枚举视为具有有限个实例的类。除了您最初声明的实例之外,永远不会有任何不同的实例。

因此,您不能拥有公共或受保护的构造函数,因为这将允许创建更多实例。

注意:这可能不是官方原因。但对我来说,以这种方式思考枚举是最有意义的。


答案 2

因为您不能自己调用构造函数。

以下是 Enums 教程的内容:

注意:枚举类型的构造函数必须是包专用或专用访问。它会自动创建在枚举正文开头定义的常量。您不能自己调用枚举构造函数。