Java 如何使用字符串作为接受枚举的方法的参数?
我有一个类Java 如何使用字符串作为接受枚举的方法的参数?,java,enums,setter,Java,Enums,Setter,我有一个类TestCase。在这里面我有一个内部类Test。在类enum OwnerType中有enum的setter和getter public static final class Test{ public enum OwnerType { User("User"), Role("Role"); } public OwnerType getOwnerType() { return m_ownerType; }
TestCase
。在这里面我有一个内部类Test
。在类enum OwnerType
中有enum的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
方法?必须先进行转换
请尝试以下方法:
test.setOwnerType(Test.OwnerType.valueOf(JSONUtil.getStringValue(obj, JSON_KEY)));
请注意,您可以执行
Enum.valueOf(YourEnum.class,stringValue)
和YourEnum.valueOf(stringValue)
您必须使用OwnerType#valueOf(String name)
方法:
String name = JSONUtil.getStringValue(obj, JSON_KEY);
test.setOwnerType(Test.OwnerType.valueOf(name));
JSON中的实际值是多少?枚举的完整、可编译的代码是什么?上面的代码不可编译,您需要将枚举代码更改为
public enum OwnerType{User,Role;}
,或者需要一个带字符串类型参数的OwnerType
构造函数。是。我拥有的构造函数喜欢私有的最终字符串值;私有所有者类型(字符串值){this.value=value;}确定。您已经可以使用m_ownerType.name()
或m_ownerType.toString()
获取枚举的名称(请查看Javadoc以了解何时使用该名称)