[英]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.