簡體   English   中英

如何獲取Java中的所有枚舉值?

[英]How to get all enum values in 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();

Enum s 就像Class es,因為它們是類型化的。 您當前的代碼只是檢查它是否是 Enum 而不指定它屬於什么類型的 Enum 。

因為您還沒有指定枚舉的類型,所以您必須使用反射來找出枚舉值的列表。

你可以這樣做:

enumValue.getDeclaringClass().getEnumConstants() 

這將返回一個 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);
}

任何試圖以列表形式獲取所有值的人都可以簡單地執行此操作。

Arrays.asList(YouEnumClass.values())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM