Programming/자바(Java)

12-17 열거형

먹보 개발자 2024. 10. 17. 17:29

- 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공

 

열거형의 정의와 사용

- 열거형을 정의하는 방법 

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

 

 

- 열거형 타입의 변수를 선언하고 사용하는 방법

enum Direction { EAST, SOUTH, WEST, NORTH }

    class Unit {

            int x, y;             // 유닛의 위치

            Direction dir     // 열거형 인스턴스

 

            void init() {

                 dir = Direction.EAST;  // 유닛의 방향을 EAST로 초기화

             }

        }

 

- 열거형 상수의 비교에 ==와 compareTo() 사용가능

* 열거형 상수에 비교연산자 사용불가

 

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

- 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다.

 

- values(), valueOf()는 컴파일러가 자동으로 추가

 

열거형에 멤버 추가하기

- 불연속적인 열거형 상수의 경우, 원하는 값을 괄호()안에 적는다.

enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) }

- 괄호를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해 줘야 한다.

 

- 열거형의 생성자는 묵시적으로 private이므로, 외부에서 객체생성 불가

Direction d = new Direction(1); // 에러, 열거형의 생성자는 외부에서 호출 불가