我在kotlin中有一个类,它是一个如下的枚举类
enum class Status {
@SerializedName("open")
OPEN,
@SerializedName("close")
CLOSE,
UNKNOWN
}
我还有另一个使用状态枚举类的叫票的类
class Order(
var id: String,
var status: Status = Status.UNKNOWN,
}
当GSON映射接收到的值时,我有一个例外,因为status
字段现在包含一个新值in_progress
。由于未在Status
类中声明此状态,因此发生了异常。
如何避免出现异常,以确保如果在GSON中设置了新状态但在Status
类中未定义新状态,则我的状态为UNKNOWN
?
关于在没有匹配项的情况下如何返回默认值UNKNOWN
的任何想法?
谢谢
答案 0 :(得分:0)
如果您想走这条路,那么您的问题就是枚举。 GSON正在等待一个枚举值,因此如果in_progress不是一个值,GSON会拒绝。
您可以做的是创建一个新的datatyp并将您的枚举包装在其中,但是使用枚举的generell想法丢失了。
另一种方法是完全摆脱枚举。实现一个名为status的接口,并为每种Status类型实现一个类。这有点像枚举。然后,您可以通过以下方式发送订单 变量状态:OrderStatus = In_Progress() 变量状态:OrderStatus = Unkonwn() 稍后,您可以调用诸如instanceof之类的东西来检查OrderStatus的类型。
编辑后: 如果您想要描述中的行为,则必须确切地说出GSON在等待什么(请参阅GSON适配器)。