유한 한 수의 값만 취할 수있는 변수 / 매개 변수로 작업 할 때 다음과 enum
같이 항상 Java를 사용하려고합니다 .
public enum BonusType {
MONTHLY, YEARLY, ONE_OFF
}
내 코드 안에 있으면 잘 작동합니다. 그러나 동일한 목적으로 일반 int
(또는 String
) 값을 사용하는 다른 코드와 인터페이스해야하는 경우가 많거나 데이터가 숫자 또는 문자열로 저장된 데이터베이스에서 읽거나 써야합니다.
이 경우 두 가지 방법을 모두 변환 할 수 있도록 각 열거 형 값을 정수와 연결하는 편리한 방법을 원합니다 (즉, "가역 열거 형"이 필요합니다).
enum에서 int로 이동하는 것은 쉽습니다.
public enum BonusType {
public final int id;
BonusType(int id) {
this.id = id;
}
MONTHLY(1), YEARLY(2), ONE_OFF(3);
}
그런 다음 int 값에 BonusType x = MONTHLY; int id = x.id;
.
그러나, 나는 반대로, 즉 int에서 enum으로가는 좋은 방법을 볼 수 없습니다. 이상적으로는
BonusType bt = BonusType.getById(2);
내가 생각 해낼 수있는 유일한 해결책은 다음과 같습니다.
BonusType.values()
"int-> enum"맵을 채우는 데 사용하는 조회 메소드를 enum 에 넣은 다음이를 캐시하여 조회에 사용합니다. 작동하지만이 메서드를 사용하는 각 열거 형에 동일하게 복사해야합니다. :-(.- 조회 메소드를 정적 유틸리티 클래스에 넣으십시오. 그런 다음 하나의 "조회"메서드 만 필요하지만 임의의 열거 형에 대해 작동하려면 리플렉션을 사용하여 조작해야합니다.
두 가지 방법 모두 이러한 간단한 (?) 문제에 대해 매우 어색해 보입니다.
다른 아이디어 / 통찰이 있습니까?
ordinal()
.ordinal()
), 아니면 외부 세력에 의해 결정됩니까?