Albert451 :
나는 열거 값 이름을 지정한 경우 확인합니다 그 어떤 열거 객체에 대해 보편적 인 방법을 만들려고하지만, 같은 Enum
유형 오브젝트 나는 방법을 사용하는 것이 unnable입니다 values();
. 왜?
에서 값을 얻을 수있는 방법이 있나요 Enum
유형의 객체는?
나는 구성에서 값의 유효한 문자열이 있는지 확인하기 위해이 같은 방법을 필요로 myEnum.valueOf(String);
주어진 문자열이 잘못 될 경우 다음 예외를 던질 것이기 때문에 (그리고 나는 그것을 원하지 않는다).
이 같은 모습에 내 방법을 원하는 :
public static Boolean enumContains(Enum en, String valueString){
return toStringList(en.values()).contains(valueString.toUpperCase());
}
그러나 어떤 방법이 없습니다 Enum.values()
. 어떻게 올바르게이 방법을 만드는 방법?
야곱 G. :
Enum#values
특정 열거를 전달하지 않는 한 당신은 컴파일 시간에 그것을 사용할 수 있도록 컴파일러에 의해 생성되는 방법이다 Enum<?>
.
참조 : https://stackoverflow.com/a/13659231/7294647
하나 개의 솔루션은 전달하는 것 Class<E extends Enum<E>>
대신에 사용 Class#getEnumConstants
:
public static <E extends Enum<E>> Boolean enumContains(Class<E> clazz, String valueString){
return toStringList(clazz.getEnumConstants()).contains(valueString.toUpperCase());
}
당신이 열거라는 한 경우 MyEnum
에, 당신은 단지에 전달할 수있는 MyEnum.class
첫 번째 인수로.