이름에 숫자를 넣을 수 있는 방법은 없습니다.
(식별자(변수명)와 동일한 규칙 - 숫자로 시작할 수 없음)
아래의 예시처럼 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("올바른 숫자가 없습니다.");
}
}