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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

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

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;
        }
    }

构造函数可以使用默认值或private修饰符,但如果给定publicprotected修饰符该怎么做?

提问于
用户回答回答于

将Enum看作一个实例数量有限的类。除了最初声明的实例之外,不可能有任何不同的实例。

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

用户回答回答于

你不能自己调用构造函数。

这里是关于Enum的教程说:

注:枚举类型的构造函数必须是包-私有访问或私有访问。它自动创建在枚举体开头定义的常量。不能自己调用枚举构造函数。

扫码关注云+社区