이유는 열거 객체 클래스 .values ()를 얻을 수 없다?

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첫 번째 인수로.

추천

출처http://43.154.161.224:23101/article/api/json?id=178905&siteId=1