【问题标题】:Why java enum constructors have to be private? [duplicate]为什么 java 枚举构造函数必须是私有的? [复制]
【发布时间】:2019-10-06 16:17:56
【问题描述】:

publicprotected 修饰符不允许与 enum 构造函数一起使用。为什么?我试过阅读标准文档,但不是很理解。

【问题讨论】:

  • 因为它在定义值的同一 enum 内,如果理想情况下可以声明构造函数 public(例如)......外部 API 可以(理想情况下)为enum..... 和 enum 应该是常量值。
  • @lealceldeiro 我认为您误用了“理想”一词。它没有什么理想的。枚举表示一组有限的值。添加更多的能力是不可取的。它会破坏 switch 语句等。
  • 您应该问自己为什么要使用枚举?如果您可以为其添加值,枚举仍然有用吗?
  • 这个构造函数必须是私有的,因为枚举定义了一组有限的值。如果构造函数是公共的,人们可能会创造更多的价值。这将扩展最初声明的值集。

标签: java


【解决方案1】:

构造函数的目的是自定义枚举内部常量的创建一次,而不是创建和初始化枚举的不同实例(这没有意义)。这就是为什么它必须是私有的。

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

链接:https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

【讨论】:

    猜你喜欢
    • 2016-07-17
    • 1970-01-01
    • 2011-12-06
    • 2011-10-30
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多