我遇到了这个问题,我不知道我需要迭代其可能值的实际enum
类型。
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
如何从enumValue中提取其可能的值?
答案 0 :(得分:138)
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
答案 1 :(得分:76)
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
或者
YourEnumClass[] yourEnums = YourEnumClass.values();
答案 2 :(得分:13)
Enum
与Class
类似,因为它们是键入的。您当前的代码只是检查它是否是Enum而没有指定它所属的Enum类型。
因为你没有指定枚举的类型,所以你必须使用反射来找出枚举值列表是什么。
你可以这样做:
enumValue.getDeclaringClass().getEnumConstants()
这将返回一个Enum对象数组,每个对象都是可用选项之一。
答案 3 :(得分:9)
值枚举方法
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
答案 4 :(得分:5)
...还是MyEnum.values()?或者我错过了什么?
答案 5 :(得分:3)
这样也可以使用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);
}
答案 6 :(得分:1)
在这里,角色是一个枚举,其中包含以下值[ADMIN,USER,OTHER]。
C:\xampp\mysql\bin> mysql -u username -p database_name < file.sql