2013-01-16 123 views
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; 
    } 
} 
+0

你需要一个开关来匹配枚举之外的枚举枚举? – Will

回答

3

这是不完全清楚的帽子你的意思“从这个枚举实际值与switch语句”。因此,这里有事情做与此枚举:

可以使用枚举在switch语句来如下:如果你想抓住克intValue

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; 
} 

,你可以使用:

int value = g.getIntValue(); 

如果你想抓住从int一个Gender值可以使用:

Gender g = Gender.getByIntValue(1); 

如果你想抓住从String一个Gender值可以使用:

Gender g = Enum.valueOf(Gender, "Male"); 
+1

并且这会从字符串中获取“Gender”值... http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#valueOf(java.lang.Class,java。 lang.String) – Fildor

+0

@Fildor谢谢,忘了那个! :) – Veger

0

这是你想要的吗?

switch (genderVar) { 
case Unknown: 
case Male: 
case Female: 
default: 
}