AVA - 열거형 (1)

1803 단어 JavaJava

열거형(enum)

  • 관련된 상수들을 같이 묶어 놓은 것. JAVA는 타입에 안전한 열거형을 제공
    즉, 값과 타입을 모두 체크한다.
class Card{
	enum Kind	{	CLOVER, HEART, DIAMOND, SPADE	}	
    //열거형 kind를 정의	열거형 상수 앞에서부터 0,1,2,3 의 값을 가짐
    
    enum Value	{ TWO,	THREE, FOUR	}					
    //열거형 value를 정의
    
    final kind kind;	//타입이 int가 아닌 kind임에 유의하자.
    final Value value;	
}

///////////////////////////////

if (Card.Kind.CLOVER == CARD.Value.TWO){	
// 컴파일에러, 타입이 달라 비교 불가능.

열거형을 정의하는 방법

enum 열거형이름 {상수1, 상수2, ....}

//ex)
//enum Direction{	EAST, SOUTH, WEST, NORTH	}
  • 열거형 타입의 변수를 선언하고 사용하는 방법
class unit{
	int x,y;		//유닛의 위치
    Direction dir;	//열거형 인스턴스 변수를 선언
    
    void init(){
    	dir = Direction.East;	//유닛의 방향을 EAST로 초기화
    }
}
  • 열거형 상수의 비교에 ==와 compareTo() 사용가능
if(dir==Direction.EAST{
	x++;
} else if ( dir > Direction.WEST) //에러, 열거형 상수에 비교연산자 사용 불가능
{
	...
} else if dir.compareTo(Direction.WEST>0)
{
	//에러, compareTo()는 사용 가능.
}

열거형의 조상

String name()						      
:열거형 상수의 이름을 문자열로 반환

int ordinal()							  
:열거형 상수가 정의된 순서를 반환(0부터 시작)

T valueOf(Class<T> enumType, String name) 
:지정된 열거형에서 name과 일치하는 열거형 상수를 반환

// - values(), valueOf()는 컴파일러가 자동으로 추가
static E[] values()
static E valueOf(String name)

Direction[] dArr = Direction.values();

for(Direction d : dArr)			// for(Direction d : Direction.values())
	System.out.printf("%s=%d%n", d.name(), d.ordinal());

좋은 웹페이지 즐겨찾기