java - 从对象中获取枚举的索引?(爪哇)
问题描述
我有一个使用两个枚举创建的对象卡,即 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 的约束。
解决方案
更好的解决方案是为枚举中的特定元素定义值
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()
以获得它的价值。这样,值完全由您精确定义,如果有人交换订单,也不会造成混淆。
推荐阅读
- firebase - get() 和 onSnapshot() 是否在内部共享相同的缓存?
- google-bigquery - 如何在bigquery中用in语句替换子查询
- styled-components - 使用样式组件中的道具来更改样式 *名称*(不是值)
- flutter - 在颤动中计算 100% 高度
- python - 如何过滤具有 MultiIndex 级别 2 的多个条目的行?
- owl - 在多个类之间使用相同的对象属性
- javascript - 有没有办法禁止警报?
- list - 如何在 python 列表中添加“Timedelta”值
- c++ - 引用、地址、解引用和指针的含义
- javascript - 捕获未包含在 span 中的字符串