Programming/JAVA

JAVA - 열거형

잇(IT) 2023. 6. 7. 11:49

- 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다.

 

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

- 위와 같이 상수 하나마다 값을 넣어 지정해줘야 했다.

 

enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 열거형 Kind를 정의
    enum Value { TWO, THREE, FOUR } // 열거형 Value를 정의
    
    final Kind kind;
    final Value value;
}

- 열거형을 사용하면 값을 별도로 지정해주지 않아도 순서대로 0,1,2,3...가 값으로 지정된다.

 

1. 열거형은 값 대입뿐만 아니라 타입까지 체크하기 때문에 타입에 안전하다.

 

- 열거형 상수간의 비교에는 '==' 를 사용할 수 있다.

- 그러나 '<','>'와 같은 비교연산자는 사용할 수 없고 compareTo()는 사용 가능하다. compareTo()는 두 비교대상이 같으면 0, 왼쪽이 크면 양수, 오른쪽이 크면 음수를 반환한다.

enum Direction { EAST, SOUTH, WEST, NORTH }

Direction dir;

dir == Direction.EAST
dir.compareTo(Direction.WEST) > 0

 

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

- 이외에도 values()처럼 컴파일러가 자동적으로 추가해주는 메서드가 하나 더 있다.

 

static E values()
static E valueof(String name)

 

728x90

'Programming > JAVA' 카테고리의 다른 글

Java - 람다 (기본, 함수형 인터페이스 API)  (0) 2023.08.31
JAVA - Stream API (1) (스트림 생성 방법)  (0) 2023.06.08
JAVA - Optional  (0) 2023.06.05
JAVA - Reflection API  (0) 2023.06.01
JAVA - 람다 (기본)  (0) 2023.05.18