0

如何使用 switch 语句从此枚举中生成实际值?

public enum Gender {
    Unknown(0),
    Male(1),
    Female(2);

    private static final SparseArray<Gender> lookupTable = new SparseArray<Gender>();
    static {
        for (final Gender gender : EnumSet.allOf(Gender.class)) {
            lookupTable.put(gender.intValue, gender);
        }
    }

    private final int intValue;

    public static Gender getByIntValue(int val) {
        return lookupTable.get(val);
    }

    private Gender(int intValue) {
        this.intValue = intValue;
    }

    public int getIntValue() {
        return intValue;
    }
}
4

2 回答 2

3

您的意思是“使用 switch 语句来自这个枚举的实际值”并不完全清楚。所以这里是与这个枚举有关的事情:

您可以在 - 语句中使用枚举,switch如下所示:

Gender g = ...
switch(g) {
   case Male:
     // Do something for the males
     break;
   case Female:
     // Do something for the females
     break;
   case Unknown:
     // Argh... What to do?!
     break;
}

如果你想抓住intValueg,你可以使用:

int value = g.getIntValue();

如果你想Gender从 an 中获取一个值,int你可以使用:

Gender g = Gender.getByIntValue(1);

如果你想Gender从 a 中获取一个值,String你可以使用:

Gender g = Enum.valueOf(Gender, "Male");
于 2013-01-16T12:46:38.463 回答
0

那是你要的吗 ?

switch (genderVar) {
 case Unknown:
 case Male:
 case Female:
 default:
}
于 2013-01-16T12:48:34.623 回答