【发布时间】:2012-01-30 01:19:20
【问题描述】:
场景:
我想要一个包含标准牌组中所有扑克牌的枚举。对于此示例,请忽略小丑。
写作
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);
}
}
}
我考虑过将 card 定义为包含 suit 和 face 字段的类,其中 suit 和 face 本身就是枚举。但是在其他情况下(例如小丑拥有红色和黑色的花色),这将允许创建无效的卡片对象(即方块小丑或红色 10)。
自我回答:
显然我没有足够的代表来回答我自己的问题。
我不确定回答我自己的问题是否被认为是好的形式,但@Paul 只是给了我一个脑电波。 声明 Card 有一个私有构造函数,并使用 static Card getCard(suit, face) 在返回组合之前验证组合的方法。
【问题讨论】:
-
也许
enum不是您想要的。您真的需要将这 3 个俱乐部称为 CLUBS_3 吗? -
是的,绝对 - 私有构造函数,SUIT 和 FACE 的单独枚举。
标签: java loops coding-style enums syntactic-sugar