场景:
我想要一个包含标准牌组中所有扑克牌的枚举。对于这个示例,忽略大小王。
编写:
enum Cards {
SPADE_1(0, 1),
SPADE_2(0, 2),
etc.
感觉不对。
我希望能够做这样的事情
enum Card {
for (int suit=0; suit<4; suit++) {
for (int face=1; face<13; face++) {
new Card(suit, face);
}
}
}
我曾考虑将卡片定义为一个包含花色和点数字段的类,其中花色和点数本身是枚举类型。然而,在其他场景中(例如大小王具有红色和黑色两种花色),这样做会导致创建无效的卡片对象(即方块大小王或红桃10)。
自我回答:
显然我没有足够的声望来回答自己的问题。
我不确定是否应该自己回答问题,但@Paul刚才让我想到了一个主意。
声明Card具有私有构造函数,并使用 static Card getCard(suit, face) 方法在返回卡片之前验证组合。
enum
并不是你想要的。你真的需要把三张梅花牌称作CLUBS_3吗? - Paul