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

And*_*eas 3 java enums coding-style

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

public class Card {
    // ...
    private enum CARD_SUITE { HEARTS, DIAMONDS, CLUBS, SPADES; }
}
Run Code Online (Sandbox Code Playgroud)

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

Jay*_*han 5

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

public class Card {
    // ...
    public enum CARD_SUITE { HEARTS, DIAMONDS, CLUBS, SPADES; }
}
Run Code Online (Sandbox Code Playgroud)

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