我已经定义了这个枚举:
在另一个类中,我有一个采用字符串的构造函数,并且我想用该字符串做一个枚举:
public enum UsageType {
START("start"),
PAUSE("pause"),
RESUME("resume"),
STOP("stop"),
DESTROY("destroy");
private final String mType;
private UsageType(String type) {
mType = type;
}
/**
* Get the string representation of the UsageType
* @return string representation of the UsageType
*/
public String getAsText() {
return mType;
}
}
这是我得到的错误:
public class AppUsage {
private String mActivityName;
private String mFormattedTime;
private UsageType mUsageType;
public AppUsage(String activityName, String formattedTime, String usageType) {
mActivityName = activityName;
mFormattedTime = formattedTime;
mUsageType = mUsageType.valueOf(usageType); //HERE STRING TO ENUM!
}
//Setters and Getters....
最佳答案
尝试UsageType.valueOf(usageType.toUpperCase())
。使用该方法时,字符串应与常量名称(START
)相匹配,并且大小写很重要。
请注意,我使用的是枚举名称UsageType
,因为valueOf
是静态方法。因此,您应该在那里需要一个实例。
另外,请注意,如果不存在名称常量,则valueOf
方法将抛出IllegalArgumentException
(运行时例外)。