【问题标题】:Should Java enums be defined in their own files?Java 枚举是否应该在它们自己的文件中定义?
【发布时间】:2013-09-10 12:16:41
【问题描述】:

如果我正确理解了枚举,一个很好的例子是使用它们来存储扑克牌组,而不是四个幻数或四个静态最终整数。

public class Card {
    // ...
    private enum CARD_SUITE { HEARTS, DIAMONDS, CLUBS, SPADES; }
}

但是如果Card 的公共方法需要一个套件作为参数怎么办,例如isSuite(CARD_SUITE suite)?枚举是类私有的。为该单行创建一个新文件感觉非常不必要。这是怎么解决的?

【问题讨论】:

  • 可以在同一个文件中公开。

标签: java coding-style enums


【解决方案1】:

您可以将public 设置在同一个类中,只有公共class 应在单独的Java 文件中定义。

public class Card {
    // ...
    public enum CARD_SUITE { HEARTS, DIAMONDS, CLUBS, SPADES; }
}

然后您可以访问enum,例如Card.CARD_SUITE.HEARTSCard.CARD_SUITE.DIAMONDS...

【讨论】:

  • 哇,我错过了。谢谢。
【解决方案2】:

您可以在 Card 类中拥有一个公共 CARD_SUITE 枚举。如果枚举只是一个值列表,那么它是有意义的。

如果你的枚举有一些方法,实现了一些接口等,最好在自己的文件中定义。

【讨论】:

    【解决方案3】:

    当然,

    只需将其放在单独的文件中即可。

    并尝试在将来使用单独的文件 perenum 进行良好的代码维护。

    但如果你打算将enum 仅用于一个类,请将其设置为private

    ECardSuite.java

    public enum ECardSuite {
     HEARTS,
     DIAMONDS,
     CLUBS,
     SPADES; }
    

    【讨论】:

      【解决方案4】:

      枚举是普通的 Java 类,因此为它们创建一个单独的类文件是完全正确的。

      在我看来,它肯定更清晰,更容易搜索。

      【讨论】:

        【解决方案5】:

        我个人公开了这样的枚举。枚举属于该类(因此没有单独的文件),将其公开是安全的(无论如何您都不能更改它)。

        【讨论】:

          猜你喜欢
          • 2011-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-12
          • 1970-01-01
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          相关资源
          最近更新 更多