我有一个班级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
方法?
答案 0 :(得分:1)
请改为尝试:
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));