2015-02-06 2 views
-4

나는 enums 타입에 대해 들었고 온라인으로 살펴 보았지만 상수를 사용하는 것보다 낫다는 좋은 설명을 찾을 수 없었다. - enum Suit {HEARTS, DIAMONDS, SPADES, CLUBS} - enum Face {ACE, JACK, QUEEN, KING}enum을 사용하는 방법? 자바

:

(내 포커 카드 클래스에서 다음과 같은 데이터를 정의하는 데 사용할 수 있습니다 : 상수를 사용하는 방법과 우리가 그것을 적용하기를 원한다면 다음 코드를 사용하는 것보다 더 나은 방법 아무도 설명 할 수

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

상수는 일반적으로 정의되어 있지 않으며 제어하기 어렵습니다. enum은 수용 할 수있는 값과 클래스 또는 메소드가 예상 할 수있는 것보다 훨씬 엄격하게 제어합니다. – MadProgrammer

+0

'Enums' 및'Constants'는 다음과 같습니다. 같은 것은 아닙니다 ... 당신의 질문은 하나가 다른 것의 보완적인 것처럼 소리가납니다; 반드시 그런 것은 아닙니다. '상수'는 하나의 값을 가지며, 즉'_constant_ '이고'열거 형'은 필요에 따라 지정할 수있는 값을 여러 개 가질 수 있습니다. – Brian

+1

* "상수 사용보다 낫다"* [공식 튜토리얼] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)에서 설명합니다. – Radiodef

답변

0

는 사람이 사용하는 상수보다 더 나은 어떻게 설명 할 수 있을까요?

하나, 그냥 다른 다른보다 낫다. 여기에의 장점입니다 0.


열거

  • 하기에, 유용한 방법을 제공 documentation
  • constants
  • 유형 안전의 class 전체로 표현 될 수 있습니다 참조 switch 문에서 사용할 수 있습니다 constants을 사용할 수 있습니다.값이고, 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이 답변이 도움이 되었습니까? –

관련 문제