Enum - 숫자형 사용하기

코지클래식·2021년 12월 1일
0

Enum에서

  • 숫자로 불러오기
  • Enum 객체의 이름이 아닌(A,B) 내부 속성(색깔,숫자)으로
    Enum 객체 명 또는 다른 값을 꺼내고 싶을 때 사용할 수 있는 방법을 소개합니다.

해결책

1. 네이밍

이름에 숫자를 넣을 수 있는 방법은 없습니다.
(식별자(변수명)와 동일한 규칙 - 숫자로 시작할 수 없음)

2. for loop

아래의 예시처럼 for 문으로 모든 케이스를 조회해서
불러오는 방법은 이미 다들 생각은 해봤으실 겁니다.
저도 for loop를 사용하는 나쁜 코드라고 생각해서 망설이고,
더 좋은 방법을 찾아봤는데
일단 당장은 다른 문법적인 해결책이 없는 것 같습니다.

public class EnumWithNumber {
	public static void main(String[] args){
		System.out.println(AlphabetWithCode.findByNumber(2));
		// B
	}
}


enum AlphabetWithCode{
	A(1), B(2), C(3);

	private int num;

	AlphabetWithCode(int num){
		this.num = num;
	}

	static AlphabetWithCode findByNumber(int num){
		for (AlphabetWithCode alphabet : AlphabetWithCode.values()){
			if(num == alphabet.num){
				return alphabet;
			}
		}
		throw new IllegalArgumentException("올바른 숫자가 없습니다.");
	}
}
profile
코지베어

0개의 댓글