在多个类中使用Java中的枚举

Igo*_*gor 19 java enums class

我有以下课程:

public class Card 
{
    public enum Suit 
    {
        SPACES, HEARTS, DIAMONDS, CLUBS
    };

    public Card(Suit nsuit, int nrank)
    {
        suit = nsuit;
        rank = nrank;
    }

    private Suit suit;
    private int rank;
}
Run Code Online (Sandbox Code Playgroud)

我想在另一个类中实例化它,但该类不理解Suit枚举.我应该把枚举放在哪里让它公开显示?

Jor*_*orn 29

Suit枚举在Card类中,您必须以这种方式访问​​它:

new Card(Card.Suit.SPADES, 1);
Run Code Online (Sandbox Code Playgroud)

或者,您可以从Card中导入Suit类,并直接访问它:

import my.package.Card.Suit;
new Card(Suit.SPADES, 1);
Run Code Online (Sandbox Code Playgroud)

另一种选择是按照伯特的建议将西服放入自己的班级.


Ber*_*t F 22

把西装放在自己的班级:

Suit.java:

public enum Suit 
{
    SPACES, HEARTS, DIAMONDS, CLUBS
}
Run Code Online (Sandbox Code Playgroud)

  • 这确实解决了这个问题,但我不认为这是最好的解决方案.Suit枚举属于Card类,因为您将始终一起使用它们. (7认同)

rob*_*x44 6

枚举已经可见了.

Card card = new Card(Card.Suit.CLUBS, 5);
Run Code Online (Sandbox Code Playgroud)

将实例化一张新卡.

不相关......但你可能想让太空服套装成黑桃套装.:)