[자바(Java)] 열거형 (EnumerateType)

방용환·2023년 4월 12일
0
post-thumbnail

1. 열거형 (EnumerateType)

1. 등장배경

  • 클래스 또는 인터페이스에 상수필드를 선언한 경우 발생될 수 있는 문제점
    => 상수필드에서 값을 대표하는 단어로 사용하기 부적절한 경우 발생
    => 상수필드가 선언된 클래스 또는 인터페이스는 아무런 의미 없이 접근 용도로만 사용

위와 같은 문제점을 해결하기 위해 열거형(enum)이라는 자료형을 제공

2. 열거형 (EnumerateType)

  • 열거형 (EnumerateType) : 상수만을 선언하기 위한 자료형
  • 클래스에도 상수필드를 선언 가능하지만 보다 쉬운 상수 선언을 위해 인터페이스에 선언
  • 열거형에 선언된 상수필드는 기본적으로 정수형으로 설정
    => 상수필드를 선언하면 열거형의 기본 생성자를 이용하여 초기값이 상수필드에 저장
    => 상수필드에는 0부터 1씩 증가되는 정수값이 기본값으로 자동 저장
public enum 열거형명 {상수형,상수형, ...}
  • 열거형의 이름은 파스칼 표기법을 이용하여 작성하는 것을 권장

2. 상수필드

1. 상수필드의 자료형 변경

  • private final 제한자를 사용하여 필드 선언

Compass.java

Compass.java

public enum Compass {
	private final int value;
}

2. 상수필드의 저장값 변경

  • 필드에 저장된 값을 변경하기 위해 매개변수가 있는 생성자 선언

Compass.java

Compass.java

public enum Compass {
	private final String value;
}

3. 특징

  • 상수필드에 초기값을 저장하기 위한 매개변수가 있는 생성자 선언
    => 상수필드의 자료형 또는 저장값을 변경하기 위한 필드에 매개변수의 값 저장
    => 반드시 생성자는 은닉화 선언
  • 생성자를 선언하면 매개변수가 없는 기본생성자는 미제공

Compass.java

Compass.java

public enum Compass {
	EAST("동"), WEST("서"), SOUTH("남"), NORTH("북");
	
	private final String value;
	
	private Compass(String value) {
		this.value = value;
	}
}

4. 상수필드 값 반환

Compass.java

Compass.java

public enum Compass {
	EAST("동"), WEST("서"), SOUTH("남"), NORTH("북");
	
	private final String value;
	
	private Compass(String value) {
		this.value = value;
	}
	
	public String getValue() {
		return value;
	}
}

CompassApp.java

CompassApp.java

public class CompassApp {
	public static void main(String[] args) {

		System.out.println(Compass.EAST.getValue());
		System.out.println(Compass.WEST.getValue());
		System.out.println(Compass.SOUTH.getValue());
		System.out.println(Compass.NORTH.getValue());

	}
}

// 동
// 서
// 남
// 북

5. EnumType.values()

  • EnumType.values() : 열거형에 선언된 모든 상수필드를 배열로 변환하여 반환하는 메소드
public class CompassApp {
	public static void main(String[] args) {
		for (Compass compass : Compass.values()) {
			System.out.println(compass + " = " + compass.getValue());
		}
	}
} 

// EAST = 동
// WEST = 서
// SOUTH = 남
// NORTH = 북

5. EnumType.oridinal()

  • EnumType.oridinal() : 상수필드를 구분하기 위한 첨자(index)를 반환하는 메소드
public class CompassApp {
	public static void main(String[] args) {
		for (Compass compass : Compass.values()) {
			System.out.println(compass + " = " + compass.getValue() + " >> " + compass.ordinal());
		}
	}
}

// EAST = 동 >> 0
// WEST = 서 >> 1
// SOUTH = 남 >> 2
// NORTH = 북 >> 3

3. 출력

EnumOne.java

EnumOne.java

public enum EnumOne {
	INSERT, UPDATE, DELETE, SELECT
}

EnumApp.java

EnumApp.java

public class EnumApp {
	public static void main(String[] args) {

		System.out.println(EnumOne.INSERT);
		System.out.println(EnumOne.UPDATE);
		System.out.println(EnumOne.DELETE);
		System.out.println(EnumOne.SELECT);
        System.out.println("===============");
		
		EnumOne choice = EnumOne.INSERT;

		System.out.println(choice);
	}
}

// INSERT
// UPDATE
// DELETE
// SELECT
// ===============
// INSERT

  • 열거형에 선언된 상수필드값 출력
    => 상수필드의 이름이 제공되어 출력
    => 프로그램에서 상수가 값을 대표하는 이름으로 사용 가능
  • 열거형에 선언된 상수를 저장하기 위해서는 반드시 열거형을 이용하여 변수 선언
    => 상수필드가 선언된 열거형을 하나의 자료형으로 사용 가능

0개의 댓글