【问题标题】:Java - Difference between private and package-private enum constructor [duplicate]Java - 私有和包私有枚举构造函数之间的区别[重复]
【发布时间】:2013-09-09 18:49:18
【问题描述】:

最近我经常使用枚举。所以我想知道...

私有枚举构造函数和没有任何可见性修饰符(包私有)的枚举构造函数之间有什么区别吗?

【问题讨论】:

    标签: java constructor enums private package-private


    【解决方案1】:

    枚举的构造函数隐含private,就像接口和注解的方法隐含public abstract。对于类成员,默认是本地包。

    顺便说一句,枚举类隐式为final,嵌套枚举类隐式为static

    较旧的构造往往允许您添加隐式修饰符,但较新的构造不允许您说。例如枚举是最终的,但您不能将 final 添加到枚举中。

    【讨论】:

    • 谢谢。这真的很有帮助:D
    • 我以为默认是本地包,但是一旦你开始列出所有组合,你会发现它更多的是例外而不是规则。有点像“i-before-e-except-after-c”,其中有很多例外。该规则适用于常见的单词/案例。
    【解决方案2】:

    根据javadocs

    枚举类型的构造函数必须是包私有或私有访问。

    但根据JLS

    如果没有为枚举类型的构造函数指定访问修饰符,则构造函数是私有的。

    所以 package-private 和 private 没有区别。

    【讨论】:

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