본문 바로가기
Language/java

[Java] 열거형_열거형이란?

by gamxong 2022. 7. 30.

열거형이란?

: 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용

 

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;
}

// same

class Card {
	enum Kind { CLOVER, HEART, DIAMOND, SPADE }
    enum Value { TWO, THREE, FOUR }
    
    final Kind kind;
    final Value value;
}

 

 

※ 자바의 열거형은 '타입에 안전한 열거형'이라서 실제 값이 같아도 타입이 다르면 컴파일 에러 발생.

   ▶ 열거형을 쓰면 타입에 안전함.

 

 

열거형의 정의와 사용

 

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

 

사용

enum Direction { EAST, SOUTH, WEST, NORTH }

class Unit {
	int x, y;
    Direction dir;
    
    void init() {
    	dir = Direction.EAST;
    }
}

 

 

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

 

열거형 Direction에 정의된 모든 상수를 출력하려면

Direction dArr = Direction.values();

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

- values() 는 열거형의 모든 상수를 배열에 담아 반환

- ordinal() 은 모든 열거형의 조상인 java.lang.Enum클래스에 정의된 것으로, 열거형 상수가 정의된 순서를 정수로 반환

 

※ 그 밖의 Enum클래스에 정의된 메서드

메서드 설명
Class<E> getDeclearingClass() 열거형의 Class객체를 반환
String name() 열거형 상수의 이름을 문자열로 반환
int ordinal() 열거형 상수가 정의된 순서를 반환
T valueOf(Class<T> enumType, String name) 지정된 열거형에서 name과 일치하는 열거형 상수를 반환

 

Direction d = Direction.valueOf("WEST");

System.out.println(d);  // WEST
System.out.println(Direction.WEST == Direction.valueOf("WEST");  // true

 

댓글