enum
가능한 값을 반복해야하는 실제 유형 을 알지 못한 채이 문제를 발견했습니다 .
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
enumValue에서 가능한 값을 추출하는 방법에 대한 아이디어가 있습니까?
답변
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
답변
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
또는
YourEnumClass[] yourEnums = YourEnumClass.values();
답변
Enum
s는 같다 Class
입력된다는 점에서 es . 현재 코드는 어떤 유형의 Enum인지 지정하지 않고 Enum인지 확인합니다.
열거 형의 유형을 지정하지 않았기 때문에 열거 형 값 목록이 무엇인지 알아 내기 위해 리플렉션을 사용해야합니다.
다음과 같이 할 수 있습니다.
enumValue.getDeclaringClass().getEnumConstants()
이것은 각각 사용 가능한 옵션 중 하나 인 Enum 개체의 배열을 반환합니다.
답변
열거 형 값 방법
모든 enum 인스턴스를 반환하는 enum.values () 메서드.
public class EnumTest {
private enum Currency {
PENNY("1 rs"), NICKLE("5 rs"), DIME("10 rs"), QUARTER("25 rs");
private String value;
private Currency(String brand) {
this.value = brand;
}
@Override
public String toString() {
return value;
}
}
public static void main(String args[]) {
Currency[] currencies = Currency.values();
// enum name using name method
// enum to String using toString() method
for (Currency currency : currencies) {
System.out.printf("[ Currency : %s,
Value : %s ]%n",currency.name(),currency);
}
}
}
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
답변
… 또는 MyEnum.values ()? 아니면 내가 뭔가를 놓치고 있습니까?
답변
여기서 Role은 [ADMIN, USER, OTHER] 값을 포함하는 열거 형입니다.
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});
답변
다음과 같이 java.util.EnumSet을 사용할 수도 있습니다.
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}