[JAVA] 열거형을 알아보자

sangwoo·2023년 11월 25일
0

java

목록 보기
1/1

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

열거형의 특징

  1. 타입에 안전한 열거형이라고 하는데 실제 값이 같이도 타입이 다르다면 컴파일 에러가 발생한다.

  2. 열거형 상수를 사용하면 기존의 소스를 다시 컴파일 하지 않아도 된다.

열거형의 정의와 사용

enum 열거형 이름 { 상수명1, 상수명2, ... }
enum Direction { EAST, SOUTH, WEST, NORTH }

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

열거형의 사용은 위와 같이 열거형 이름.상수명으로 사용한다.

상수간 비교

상수간의 비교는 ==로 할 수 있다. 이것은 equals() 보다 빠른 성능을 제공한다.

대신 >,<와 같은 비교연산자는 사용할 수 없고 대신 CompareTo()를 사용하여 비교할 수 있다.

상수 다루기

  1. values()
    열거형의 모든 상수를 배열에 담아 반환하는 해당 메서드는 모든 열거형이 가지고 있는 것으로 컴파일러가 자동으로 추가해 준다.
  1. ordinal()은 모든 열거형의 조상인 java.lang.Enum 클래스에서 정의된 것으로, 열거형 상수가 정의된 순서(0부터 시작)를 정수로 반환한다.

하지만 이 값은 내부적인 용도로만 사용되기 때문에 이값을 열거형 상수의 값으로 사용하지 않는 것이 좋다.

  1. name()
    열거형 상수의 이름을 문자열로 반환한다.

  2. valuesOf(String name)
    열거형 상수의 이름으로 문자열 상수에 대한 참조를 얻을 수 있게 해준다.

열거형에 멤버 추가하기

위 처럼 ordinal()을 사용하지 않고 직접 열거형 상수 값을 설정하여 사용할 수 있다. 이 때 해당 상수 값은 멤버 변수로 선언하고 생성자를 통해 초기화되어야 한다.

이때 여러 상수값을 추가 할 수 있으며 추가할 때 마다 멤버 변수와 생성자 매개변수도 같이 추가되어야 한다.

여기서 열거형 생성자는 외부에서 호출할 수 없다. 열거형 생성자는 private가 없지만 묵시적으로 private라고 약속했기 때문이다.

그리고 열거형 상수 값을 이용한 메서드도 만들 수 있다.

0개의 댓글