【发布时间】:2014-03-07 12:14:51
【问题描述】:
我有一堂课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;
}
报错
TestCase.Test类型中的方法setOwnerType(TestCase.Test.OwnerType)不适用于参数 (String)。
如何转换值或将其设置为createTest 方法?
【问题讨论】:
-
JSON 中的实际值是多少?枚举的完整、可编译的代码是什么?
-
以上代码无法编译,您需要将枚举代码更改为
public enum OwnerType { User, Role; },或者您需要一个带有字符串类型参数的OwnerType的构造函数。 -
是的。我喜欢的构造函数 private final String value;private OwnerType(String value) {this.value = value;}
-
好的。您已经可以使用
m_ownerType.name()或m_ownerType.toString()获取枚举的名称(查看Javadoc 了解何时使用哪个)