我已经定义了这个枚举:

在另一个类中,我有一个采用字符串的构造函数,并且我想用该字符串做一个枚举:

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(运行时例外)。

09-28 06:03