如何使用枚举? java的

时间:2015-02-06 02:23:58

标签: java enums constants

我听说过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();
    }
}

1 个答案:

答案 0 :(得分:0)

  

有人能解释一下它比使用常数更好吗?

一个并不比另一个好,只是不同。以下是enum的一些优点。


<强>枚举

  • 可以在switch语句中使用
  • 提供有用的方法,请参阅documentation
  • 可以表示为classconstants
  • 类型安全,使用constants您可以使用unallowed值,而enum则强制您使用它。
  • EnumSetEnumMap

示例:

//Supported color constants
public static final int RED = 1;
public static final int BLUE = 2;

setColor(3);//would compile, but would fail later.

虽然enum会强制您接受值。