java - 从对象获取枚举的索引? ( java )

标签 java object enums

我有一个使用两个枚举创建的对象卡,即 Suit 和 Rank。这些枚举的读法如下(对格式表示歉意,不太确定如何正确):

public enum Suit
{
    HEARTS(),
    DIAMONDS(),
    SPADES(),
    CLUBS();
}

public enum Rank
{
    TWO(),
    THREE(),
    FOUR(),
    FIVE(),
    SIX(),
    SEVEN(),
    EIGHT(),
    NINE(),
    TEN(),
    JACK(),
    QUEEN(),
    KING(),
    ACE();
}

Card 构造函数如下:

public Card(Suit s, Rank r) //s and r are fields in class Card
    {
        suit = s;
        rank = r;
    }

假设一个 Card 对象是用 Suit DIAMONDS 和 Rank NINE 制作的,我知道它们分别是索引 1 和 7。

名为 Hand 的方法正在处理 5 个 Card 对象的 ArrayList,并将按值对它们进行排序,以便更容易以某种方式排列它们。是否可以为此目的从 Card 对象获取这些索引,或者是否有其他方法可以做到这一点?

添加注释,这是为了赋值,所以我受到需要使用枚举和 ArrayList 的限制。

最佳答案

更好的解决方案是为枚举中的特定元素定义值

public enum CardSuits {

    HEARTS(1),
    CLUBS(2),
    DIAMONDS(3),
    SPADES(4);

    public final int rank;

    private CardSuits(int rank){
        this.rank = rank;
    }

    public int getRank() {
        return rank;
    }
}

然后,您可以调用 CardSuits.SPADES.getRank() 以在需要时获取其值。这样,这些值完全由您精确定义,如果有人交换顺序,也不会造成困惑。

关于java - 从对象获取枚举的索引? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66469237/

相关文章:

java:尝试使用 .isDigit() 时找不到符号

java - 用于在 Java JPA 中序列化对象的包装器

java - Spring MVC : How to populate my Object with JSON

swift - 子枚举 rawValue

java - 通过java泛型动态返回类型

python - 对象不包括列表推导中的方法

java - OOP - 通过实例类的引用变量访问对象

objective-c - 对象数 (0) 与键数 (1) 不同

java - 使用 Gson 显示枚举及其属性的映射

c++ - 在 C++ 中使用枚举作为数组索引