Enum

수호천사임다·2024년 10월 1일

자바

목록 보기
1/15

num(열거형)은

Java에서 상수 집합을 정의하는 특별한 데이터 타입. enum을 사용하면 관련된 상수 값을 그룹화하여 가독성과 안정성을 높일 수 있다.
enum은 new를 사용하여 객체를 생성 할 수 없다.
enum 인스턴스는 코드 상에서 처음 호출되거나 참조 될 때 생성한다.

타입 안전성: enum은 타입 안전성을 제공하므로, 잘못된 상수를 사용하는 것을 방지합니다.

ENUM - 주요 메서드

  • values(): 모든 ENUM 상수를 포함하는 배열을 반환한다.
  • valueOf(String name): 주어진 이름과 일치하는 ENUM 상수를 반환한다.
  • name(): ENUM 상수의 이름을 문자열로 반환한다.
  • ordinal(): ENUM 상수의 선언 순서(0부터 시작)를 반환한다.
  • toString(): ENUM 상수의 이름을 문자열로 반환한다. name() 메서드와 유사하지만, toString() 은 직접 오버라이드 할 수 있다

주의 ordinal()은 가급적 사용하지 않는 것이 좋다.

  • ordinal() 의 값은 가급적 사용하지 않는 것이 좋다. 왜냐하면 이 값을 사용하다가 중간에 상수를 선언하는 위치가 변경되면 전체 상수의 위치가 모두 변경될 수 있기 때문이다.

열거형(ENUM)의 장점

  • 타입 안정성 향상: 열거형은 사전에 정의된 상수들로만 구성되므로, 유효하지 않은 값이 입력될 가능성이 없다. 이런 경우 컴파일 오류가 발생한다.
  • 간결성 및 일관성: 열거형을 사용하면 코드가 더 간결하고 명확해지며, 데이터의 일관성이 보장된다.
  • 확장성: 새로운 회원 등급을 타입을 추가하고 싶을 때, ENUM에 새로운 상수를 추가하기만 하면 된다.

열거형을 사용하는 경우 static import 를 적절하게 사용하면 더 읽기 좋은 코드를 만들 수 있다.

열거형 정리

  • 열거형은 java.lang.Enum 를 자동(강제)으로 상속 받는다.
  • 열거형은 이미 java.lang.Enum 을 상속 받았기 때문에 추가로 다른 클래스를 상속을 받을 수 없다.
  • 열거형은 인터페이스를 구현할 수 있다.
  • 열거형에 추상 메서드를 선언하고, 구현할 수 있다.

열거형 상수에 값 할당

  • 값을 할당하기 위해서는 생성자를 만들어야 한다.
public class Ex02 {
	
	public static void main(String[] args) {
		System.out.println(City.SEOLU);
		
		System.out.println("전체 리스트");
		for (City c : City.values()) {
			System.out.println(c.getName() + " -> " + c.getCount());
		}
	}

}
enum City {
	SEOLU("서울", 1000),
	BUSAN("부산", 350),
	INCHEON("인천", 3000);
	
	private String name;
	private int count;
	
	// 생성자는 private 만 가능하며, private를 생략해도 private 
	private City(String name, int count) {
		this.name = name;
		this.count = count;
	}

	public String getName() {
		return name;
	}
	

	public int getCount() {
		return count;
	}
	
	@Override
	public String toString() {
		return this.name + " 인구 : " + this.count;
	}
	
}

0개의 댓글