例如:
给定一个字符串“Ordinary”我希望返回值0。这就是我所拥有的:
public enum MembershipTypes
{
ORDINARY(0,"Ordinary"),
WORKING(1,"Working"),
CORE(2,"Core"),
COORDINATOR(3,"Coordinator");
private int intVal;
private String strVal;
/**
*
* @param intValIn
* @param strValIn
*/
MembershipTypes(int intValIn, String strValIn)
{
intVal = intValIn;
strVal = strValIn;
}
/**
*
* Gets the integer value
* @return intVal
*/
public int getIntVal()
{
return intVal;
}
/**
*
* Gets the string value
* @return strVal
*/
public String getStrVal()
{
return strVal;
}
}
答案 0 :(得分:1)
这是最简单的方法。将此静态方法添加到枚举:
public static int getIntValForString(String strVal) {
for (MembershipTypes e : MembershipTypes.values()) {
if (e.getStrVal().equals(strVal)) {
return e.getIntVal();
}
}
throw new IllegalArgumentException("No such enum for string val:" + strVal);
}
答案 1 :(得分:1)
使用:
private static final Map<String, MEMBERSHIP_TYPES> MEMBERSHIP_TYPES = new HashMap<String, MembershipTypes>;
static {
for (MembershipTypes membershipType : values()){
MEMBERSHIP_TYPES.put(membershipType.strVal, membershipType);
}
}
public static int getIntVal(String strVal){
if (! MEMBERSHIP_TYPES.containsKey(strVal){
throw new IllegalArgumentException("Unknown value: " + strVal);
}
return MEMBERSHIP_TYPES.get(strVal).getIntVal();
}
考虑:
答案 2 :(得分:0)
您的枚举会自动获取方法valueOf(String)
,该方法在给定枚举名称时返回正确的枚举。您可以覆盖它以检查strVal
。或者,您可以编写一个直接返回int值的实用程序函数。
答案 3 :(得分:0)
我认为你可以使用ordinal()。