Java 열거형(Enum)

iy·2024년 1월 8일

Java

목록 보기
2/8

열거형

  • 관련된 상수들을 같이 묶어 놓은 것.
  • Java는 타입에 안전한 열거형을 제공
    - Java는 타입과 값을 다 체크함
class Card{
    // 카드 무늬
    static final int CLOVER = 0;
    static final int HEART = 1;
    static final int DIAMOND =2;
    static final int SPADE =3;

    // 카드 숫자
    static final int TWO = 0;
    static final int THREE = 1;
    static final int FOUR = 2;

    final int kind;
    final int num;
}

을 열거형으로 바꿔주면

class Card{
    enum Kind {CLOVER, HEART, DIAMOND, SPADE}//열겨형 Kind 정의
    enum Value {TWO, THREE, FOUR} //열거형 Value를 정의

    final Kind kind; // 타입이 int가 아닌 Kind에 유의
    final Value value;
}

열거형의 정의와 사용

  • 열거형을 정의하는 방법
enum 열거형이름{상수명1, 상수명2,...}
  • 열거형 타입의 변수를 선언하고 사용하는 방법
class Unit {
int x, y; // 유닛의 위치
Direction dir; // 열거형 인스턴스 변수를 선언

	void init(){
		dir = Direction.EAST;// 유닛의 방향을 EAST로 초기화
	}
}
  • 열거형 상수의 비교에 ==와 compareTo() 사용가능
if(dir == Direction.EAST){
	x++;
}else if(dir > Direction.EAST){ // 에러 열거형 상수에 비교 연산자 사용 불가
...
}else if(dir.compareTo(Direction.WEST) >0){//compareTo()는 사용가능
}

열거형의 조상 - java.lang.Enum

  • 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속 받음
메서드설명
Class getDeclaringClass()열거형의 Class객체를 반환
String name()열거형 상수의 이름을 문자열로 변환
int ordinal()열거형상수가 정의된 순서를 반환(0부터 시작)
T valueOf(Class enum Type, 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());

👀 참고
자바의정석-enum

0개의 댓글