我有一个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_ownerType
为OwnerType Enum
所以在obj.put()
中我做错了与从枚举到字符串的转换有关。
感谢。
答案 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()