반응형
Java Enums : 클래스의 열거 된 값 나열
열거 형에 대한 클래스 개체가 있고 ( Class<? extends Enum>
)이 열거 형으로 표시되는 열거 형 값 목록을 가져와야합니다. values
정적 기능은 내가 필요로하는 것을 가지고,하지만 난 확실하지 클래스 객체에 대한 액세스 권한을 얻는 방법입니다.
필요한 값의 이름을 알고있는 경우 :
Class<? extends Enum> klass = ...
Enum<?> x = Enum.valueOf(klass, "NAME");
그렇지 않은 경우 다음과 같이 배열을 얻을 수 있습니다 (톰이 먼저했던 것처럼).
klass.getEnumConstants();
리플렉션을 사용하는 것은 Class # getEnumConstants () 를 호출하는 것처럼 간단합니다 .
List<Enum<?>> enum2list(Class<? extends Enum<?>> cls) {
return Arrays.asList(cls.getEnumConstants());
}
EnumSet#allOf()
언급되지 않은 것을보고 놀랐습니다 .
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
지정된 요소 유형의 모든 요소를 포함하는 열거 형 집합을 만듭니다.
다음을 고려하십시오 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
반응형
'IT Share you' 카테고리의 다른 글
“지원되는 최소 Gradle 버전은 2.14.1입니다. (0) | 2020.11.16 |
---|---|
Vim에서 언어별로 다른 탭 설정을 어떻게 설정합니까? (0) | 2020.11.16 |
$ (this)와 jquery의 차이점 (0) | 2020.11.16 |
Rails에서 현재 날짜를 "mm / dd / yyyy"형식으로 표시하는 방법 (0) | 2020.11.16 |
Excel 통합 문서가 이미 열려 있는지 감지 (0) | 2020.11.16 |