Le cose all'interno enum
s sono identificatori, nomi di statica finale (costante) oggetti che sarà creato. Quindi, non puoi usare un int per nominare un oggetto.
enum
s consentono di posizionare i campi per ogni voce:
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;
}
}
Davvero non si vuole codificare tutte le 52 carte in questo modo. È possibile modellare in un altro modo:
Suite:
public static enum Suit { SPADE, HEART, DIAMOND, CLUB};
Class con alcuni ranghi popolari come costanti denominate:
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;
}
}
fonte
2013-08-15 08:57:21
non credo che si può mettere intero come un valore di enumerazione –
A intero non è un nome di variabile valido in Java! –