2015-02-06 147 views
-4

我聽說過關於枚舉類型,我在網上查了一下,但是我無法找到一個比使用常量更好的解釋。任何人都可以解釋它是如何比使用常數和如何使用它下面的代碼,如果我們想申請的更好:如何使用枚舉? java

(可以用它從我的撲克卡類定義了以下數據: - 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

常量通常是未定義的並且難以控制,枚舉使得您可以更加嚴格地控制可接受的值以及類或方法可能期望的值,而不是使用例如'Enums'和'Constants'這樣的'int' – MadProgrammer 2015-02-06 02:26:34

+0

不是一回事......你的問題聽起來像是一個是另一個的補充;他們不一定那樣。一個'常量'有一個值,即_constant_和一個'枚舉'可以有_multiple_值,您可以根據需要進行分配。 – Brian 2015-02-06 02:26:38

+1

*「如何比使用常量更好」*這是由[官方教程](http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)解釋的。 – Radiodef 2015-02-06 02:27:11

回答

0

任何人都可以解釋它是如何比使用常量更好?

一個並不比其他更好的,只是不同。這裏是的一些優點0。


枚舉

  • 能在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會迫使你把它的值。

+0

@askd這個答案幫助你瞭解更多嗎? – 2015-02-06 03:22:10