首页 > 解决方案 > 从对象中获取枚举的索引?(爪哇)

问题描述

我有一个使用两个枚举创建的对象卡,即 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 对象获取这些索引,或者是否有其他方法可以做到这一点?

添加注释,这是一个分配,所以我需要使用枚举和 ArrayLists 的约束。

标签: javaobjectenums

解决方案


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

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()以获得它的价值。这样,值完全由您精确定义,如果有人交换订单,也不会造成混淆。


推荐阅读