나는 열거 형 (나는 Class<? extends Enum>
이있다)을위한 클래스 객체를 가지고 있으며,이 열거 형에 의해 표현 된 열거 형 값들의 목록을 얻을 필요가있다. values
정적 함수에는 필요한 것이 있지만 클래스 객체에서이 함수에 액세스하는 방법을 모르겠습니다.Java Enums : 클래스에서 열거 된 값을 나열합니다. extends Enum>
49
A
답변
90
10
Class#getEnumConstants() 전화로은 간단 반사를 사용하여 :
List<Enum> enum2list(Class<? extends Enum> cls) {
return Arrays.asList(cls.getEnumConstants());
}
16
당신이 필요로하는 값의 이름을 알고있는 경우 : 당신이하지 않으면
Class<? extends Enum> klass = ...
Enum<?> x = Enum.valueOf(klass, "NAME");
을, 다음과 같이 배열을 얻을 수 있습니다 (톰이 먼저 얻었을 때) :
,515, klass.getEnumConstants();
3
제가 EnumSet#allOf()
언급되지 있는지 놀라게하고 :
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
지정된 요소 타입의 모든 요소를 포함한 ENUM 세트를 생성한다.
는 enum
다음 고려 :
enum MyEnum {
TEST1, TEST2
}
단순히이 같은 메서드를 호출 : 물론
Set<MyEnum> allElementsInMyEnum = EnumSet.allOf(MyEnum.class);
는, 이것은 Set
아닌 List
반환하지만 그것으로 충분합니다 많은 (대부분?) 사용 사례.
또는, 당신은 할 경우 enum
알 수없는 :
Class<? extends Enum> enumClass = MyEnum.class;
Set<? extends Enum> allElementsInMyEnum = EnumSet.allOf(enumClass);
Class#getEnumConstants()
에 비해이 방법의 장점은, 그것에 enum
보다 다른 것을 통과 할 수 없습니다 있도록이 입력되어 있다는 점이다
null
를 반환
String.class.getEnumConstants();
이 컴파일하지 않지만 :
EnumSet.allOf(String.class); // won't compile
관련 문제
- 1. Android Java : enums 사용
- 2. 문자열에 대한 Java enums vs 상수
- 3. 상위의 Java 열거 형
- 4. ListView and enums
- 5. Java Inetaddress, Swing extends, throws Exception
- 6. 열거 내 엔티티 클래스에서
- 7. Java - .properties 값을 컴파일 된 클래스에서 정적으로 설정할 수 있습니까?
- 8. 클래스에서 Java Enum 목록
- 9. C# enums/reflection
- 10. 다른 열거 형을 참조하는 Java 열거 형
- 11. NoSql : Enums vs Strings
- 12. WCF 버전 관리 Enums
- 13. C# enums as int
- 14. 자바 enums : 개념적 의심
- 15. 클래스에서 열거 형 값 가져 오기
- 16. 액션 클래스에서 값을 얻으십시오
- 17. Java 클래스에서 Java 클래스 호출
- 18. 클래스에서 열거 형을 사용하고 있습니까?
- 19. PersistenceSpecification 및 Enums
- 20. Enums 결합하기
- 21. NHibernate와 Enums
- 22. 레일즈 모델과 데이터베이스에서 상수 enums
- 23. Enums 목록에 매핑 하시겠습니까?
- 24. ASP.NET MVC : enums 및 ViewData [] 키
- 25. 열거 형 값을 의심합니까?
- 26. Java 클래스에서 C# 클래스로
- 27. 유사성을 나열합니다.
- 28. C# type extends interface
- 29. 다른 열거 형에서 enum 값을 보유하는 필드
- 30. 메인 클래스에서 캔버스로드 - Java
정적 - 반사. – IAdapter
'Class'는 반사 객체입니다 (패키지보다 선행합니다). –