枚举到字符串转换

时间:2014-03-10 06:50:44

标签: java string gwt enums type-conversion

我有一个TestCase类。在这里面,我有内部类Test。在类enum OwnerType中包含enum的setter和getter。

public static final class Test {
    public enum OwnerType {
        User("User"), Role("Role");
        private final String value;
        private OwnerType(String value) {
            this.value = value;
        }
        public String toValue() {
            return value;
        }
    }

    private OwnerType m_ownerType;
    public OwnerType getOwnerType() {
        return m_ownerType;
    }

    public void setOwnerType(OwnerType m_ownerType) {
        this.m_ownerType = m_ownerType;
    }

    private JSONObject getJSONObject() {
        JSONObject obj = new JSONObject();
        obj.put(KEY, new JSONString(m_ownerType.toString())); // Showing Error Enum to String Conversion

        return obj;
    }
}

m_ownerTypeOwnerType Enum所以在obj.put()中我做错了与从枚举到字符串的转换有关。

感谢。

3 个答案:

答案 0 :(得分:1)

java enums附带内置函数name(),这是将它们序列化为字符串的首选方式。

答案 1 :(得分:0)

看看Three ways to Serialize Java Enums。这取决于您的使用案例,但在大多数用例中使用 name() 方法看起来很好。

答案 2 :(得分:0)

enum中真正需要的是:

public enum OwnerType {
    User,
    Role
}

要将其值设为字符串,您可以拨打.name().toString()

OwnerType ot = OwnerType.User;
System.out.println("Owner is of type: " + ot.name());

这将打印出“所有者属于:用户”。接下来的两个将产生相同的结果:

System.out.println("Owner is of type: " + ot.toString());
System.out.println("Owner is of type: " + ot); // Implicit call to toString()