Java枚举应该在自己的文件中定义吗?

时间:2013-09-10 12:16:41

标签: java coding-style enums

如果我已经正确理解了枚举,一个很好的例子就是用它们来存储扑克牌套件,而不是四个魔术数字或四个静态最终整数。

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

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

5 个答案:

答案 0 :(得分:5)

您可以在同一个类中创建public,只应在单独的Java文件中定义public class

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

然后,您可以访问enumCard.CARD_SUITE.HEARTSCard.CARD_SUITE.DIAMONDS ...

答案 1 :(得分:2)

当然,

将它放在单独的文件中。

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

但如果您只对一个班级使用enum,请将其设为private

<强> ECardSuite.java

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

答案 2 :(得分:2)

您可以在Card类中使用公共CARD_SUITE枚举。如果枚举只是一个值列表,那就没有意义。

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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