java - 如何使用字符串作为采用枚举的方法的参数?

标签 java enums setter

我有一个类TestCase。在其中我有内部类Testenum 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;
}  

报错

The method setOwnerType(TestCase.Test.OwnerType) in the type TestCase.Test is not applicable for the arguments (String).

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

最佳答案

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

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

关于java - 如何使用字符串作为采用枚举的方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249831/

相关文章:

Java:新生代使用 100%,Eden 空间使用 100%,From 空间使用 100%

Java无法确定应用程序类

java - 如何通过 DataAccessException 检索 postgres 数据库上的 SQL 错误代码?

JavaScript 可以在 Firefox 中运行,但不能在 IE 或 Chrome 中运行

java - Java 中枚举值的“子集”

来自枚举的 Swift 3 访问字典 (json) 值

java - 枚举开关处理接口(interface)方法调用..不好的做法?

actionscript-3 - OOP 中 C 风格结构的替换

java - 如何在我的 ModelInput 类中使用 Joshua Bloch 版本所描述的构建器模式?

c# - 空的 getter 和 setter 有什么意义,因此在 c# 中自动生成 getter 和 setter 有什么意义