2015-02-06 92 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