我有一个 XML 字符串,其属性包含整数值:
<item status="2" />
还有Simple Framework
一个描述这个的类item
:
@Root
public static class Item {
@Attribute(name="status")
private int status;
public int getStatus() {
return status;
}
}
反序列化效果很好,但是我希望能够将int
类型更改为定义的enum
类型。
public enum Status {
OK(0), PENDING(1), ERROR(2);
BetStatus(int status) {
this.status = status;
}
public int getStatus() {
return status;
}
}
因此,快速修改:
@Root
public static class Item {
@Attribute(name="status")
private Status status;
public Status getStatus() {
return status;
}
}
但是现在我收到一个错误:
java.lang.IllegalArgumentException: 2 is not a constant in com.my.package.Status
是否可以在反序列化期间以int
这种方式进行转换?
我敢打赌我必须在我的Status
课堂上添加一些神奇的方法。
解决方案:
根据Reimeus
答案,我为属性留下int
了类型,我只修改了类:status
Item
@Root
public static class Item {
@Attribute(name="status")
private int status;
public Status getStatus() {
return Status.getByOrdinal(status);
}
}