如何使用字符串作为获取枚举的方法的参数?

时间:2014-03-07 12:14:52

标签: java enums setter

我有一个班级TestCase。在内部我有内部类Test。类enum OwnerType内部是枚举的setter和getter。

public static final class Test{
    public enum OwnerType {
        User("User"), 
        Role("Role");
    }

    public OwnerType getOwnerType() {
        return m_ownerType;
    }

    public void setOwnerType(OwnerType m_ownerType) {
        this.m_ownerType = m_ownerType;
    }
}
在我的案例中,

Test是内部类。我试图用JSON密钥设置值

private Test createTest(JSONObject obj) {
    Test test = new Test();
    test.setOwnerType(JSONUtil.getStringValue(obj, JSON_KEY)); // Gives error
    return test;
}  

它出错

  

setOwnerType(TestCase.Test.OwnerType)类型中的方法TestCase.Test不适用于参数(String)。

如何转换值或将其设置为createTest方法?

2 个答案:

答案 0 :(得分:1)

您必须先parse it into an enum

请改为尝试:

test.setOwnerType(Test.OwnerType.valueOf(JSONUtil.getStringValue(obj, JSON_KEY)));

请注意,您可以Enum.valueOf(YourEnum.class, stringValue)YourEnum.valueOf(stringValue)

答案 1 :(得分:1)

您必须使用OwnerType#valueOf(String name)方法:

String name = JSONUtil.getStringValue(obj, JSON_KEY);
test.setOwnerType(Test.OwnerType.valueOf(name));