728x90

열거형 : 관련된 상수들을 편하게 선언하기 위한 것. 여러 상수를 정의할때 사용하면 유용하다.

 

열거형의 정의

열거형을 정의 하는 방법

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

ex)

enum Direction {EAST, SOUTH, WEST, NORTH}

 

열거형의 상수 사용법

열거형이름.상수명

ex)

class Unit{

 int x, y;

 Direction dir;

 

 void init(){

      dir = Direction.EAST;

 }

}

 

열거형 상수간의 비교 <, >와 같은 비교연산자는 사용이 불가능하다. 그러나 == 연산과 compareTo()는 사용가능하다.

 

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

열거형의 모든 상수 출력

ex)

Direction[] dArr = Direction.values();

for(Direction d : dArr)

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

 

values() 메서드는 열거형의 모든 상수를 배열에 담아 반환하는 메서드이다. 이 메서드는 모든 열거형이 가지고있다.

 

Enum클래스 메서드

Class<E> getDeclaringClass) : 열거형의 class 객체를 반환

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

int ordinal() : 열거형 상수가 저장된 순서를 반환한다.

T valueOf(Class<T> enumType, String name) : 지정된 열거형 name과 일치하는 열거형 상수를 반환한다.

compareTo를 통해 대소비교가 가능하다.

values()메소드로 열거형을 열거형 배열로 반환할 수 있다.

 

열거형의 멤버

상수의 값을 지정해주고 싶을 때에는 열거형 상수의 이름 옆에 지정하고 싶은 값을 괄호()와 함께 적어주면된다.

그리고 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 추가해준다. 이때 열거형 상수를 모두 정의한 후에 다른 멤버들(생성자, 인스턴스 변수, 메서드)을 추가해주어야 한다.

 

ex)

enum Direction{

     EAST(1),  SOUTH(5),  WEST(-1), NORTH(10);

 

     private final int value;

     Direction(int value) {this.value = value;}

     public int getValue() {return value;}

}

 

예제

열거형 멤버추가

Enum의 메서드를 정의하여 사용가능하다. 

EAST, WEST, SOUTH, NORTH 등은 객체의 주소이자 name이 된다.

728x90

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

쓰레드(Thread)  (0) 2021.08.13
에너테이션(annotation)  (0) 2021.08.11
지네릭스(Generics)  (0) 2021.08.07
Collection 정리  (0) 2021.08.07
Map  (0) 2021.08.07

+ Recent posts