enum
s内のものはidentifiersであり、作成される静的な最終 (定数) オブジェクトの名前です。したがって、オブジェクトの名前に int を使用することはできません。
enum
各エントリのフィールドを配置できます。
public static enum Suit {HEART,DIAMOND,SPADE,CLUB}
public static enum Cards {
ACE_OF_HEART(Suit.HEART,14), QUEEN_OF_SPADE(Suit.SPADE,13) /* etc etc*/;
private final Suit mSuit;
private final int mRank;
private Cards(Suit suit, int rank) {
assert rank >= 2 && rank <= 14;
mSuit = suit;
mRank = rank;
}
public Suit getSuit() {
return mSuit;
}
public int getRank() {
return mRank;
}
}
52 枚すべてのカードをこのようにコーディングするのは本当に望ましくありません。別の方法でモデル化できます。
スイート:
public static enum Suit { SPADE, HEART, DIAMOND, CLUB};
名前付き定数としていくつかの一般的なランクを持つクラス:
public class Card{
public static final int ACE = 14;
public static final int QUEEN = 13;
public static final int KING = 12;
public static final int JACK = 11;
private final int mRank;
private final Suite mSuit;
public Card(Suite s, int r){
this.mSuit = s;
if(r < 2 || r > 14){
throw new IllegalArgumentException("No such card with rank: "+r);
}
this.mRank = r;
}
public Suit getSuit() {
return mSuit;
}
public int getRank() {
return mRank;
}
}