我听说过enums类型,我在网上查了一下,但是我找不到比使用常数更好的解释。任何人都可以解释它如何比使用常量更好,如果我们想要应用它,如何在下面的代码中使用它:
(让我们用它来定义扑克牌类的以下数据:
- enum Suit {HEARTS, DIAMONDS, SPADES, CLUBS}
- enum Face {ACE, JACK, QUEEN, KING}
public class Card {
final static int MAX_SUITS = 4;
final static int MAX_FACE_VALUES = 13;
private int suit;
private int faceValue;
public Card(int faceValue, int suit) {
this.suit = suit;
this.faceValue = faceValue;
}
public int getSuit() {
return suit;
}
public int getFaceValue() {
return faceValue;
}
public void setSuit(int suit) {
this.suit = suit;
}
public void setFaceValue(int faceValue) {
this.faceValue = faceValue;
}
public String convertSuitToString() {
if (this.suit >= 1 && this.suit <= 4) {
if (this.suit == 1)
return "HEARTS";
else if (this.suit == 2)
return "DIAMONDS";
else if (this.suit == 3)
return "SPADES";
else if (this.suit == 4)
return "CLUB";
}
return "((Invalid Suit Entry))";
}
public String convertFaceToString() {
if (this.faceValue >= 1 && this.faceValue <= 13) {
if (this.faceValue == 1)
return "ACE";
else if (this.faceValue >= 2 && this.faceValue <= 10)
return this.faceValue + "";
else if (this.faceValue == 11)
return "JACK";
else if (this.faceValue == 12)
return "QUEEN";
else if (this.faceValue == 13)
return "KING";
}
return "((Invalid Face Value Entry))";
}
public String toString() {
return "You got " + convertFaceToString() + " of " + convertSuitToString();
}
}
答案 0 :(得分:0)
有人能解释一下它比使用常数更好吗?
一个并不比另一个好,只是不同。以下是enum
的一些优点。
<强>枚举强>
switch
语句中使用class
满constants
constants
您可以使用unallowed
值,而enum
则强制您使用它。EnumSet
和EnumMap
类示例:
//Supported color constants
public static final int RED = 1;
public static final int BLUE = 2;
setColor(3);//would compile, but would fail later.
虽然enum
会强制您接受值。