[java] Java에서 모든 열거 형 값을 얻는 방법은 무엇입니까?

enum가능한 값을 반복해야하는 실제 유형 을 알지 못한 채이 문제를 발견했습니다 .

if (value instanceof Enum){
   Enum enumValue = (Enum)value;
}

enumValue에서 가능한 값을 추출하는 방법에 대한 아이디어가 있습니까?



답변

Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();


답변

YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();

또는

YourEnumClass[] yourEnums = YourEnumClass.values();


답변

Enums는 같다 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);
}