作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 kotlin 中有一个类,它是一个枚举类,如下所示
enum class Status {
@SerializedName("open")
OPEN,
@SerializedName("close")
CLOSE,
UNKNOWN
}
我有另一个使用状态枚举类的名为 ticket 的类
class Order(
var id: String,
var status: Status = Status.UNKNOWN,
}
当 GSON 映射接收到的值时,出现异常,因为 status
字段现在包含一个新值 in_progress
。由于此状态未在 Status
类中声明,因此发生了异常。
如何避免异常以确保如果在 GSON 中设置了新状态但未在 Status
类中定义,我得到状态 UNKNOWN
?
关于如何返回默认值 UNKNOWN
在我的情况下没有匹配的任何想法?
谢谢
最佳答案
如果您想走这条路,那么您的问题就是枚举。 GSON 正在等待一个枚举值,所以如果 in_progress 不是一个值,GSON 会拒绝。
您可以做的是创建一个新的数据类型并将您的枚举包装在其中,但是使用枚举的一般想法丢失了。
另一种方法是完全摆脱枚举。实现一个名为 status 的接口(interface),并为每种类型的 Status 实现一个类。这有点像枚举+。你可以用类似的东西发送你的订单Var 状态:OrderStatus = In_Progress()变量状态:OrderStatus = Unkonwn()稍后您可以调用类似 instanceof 的方法来检查 OrderStatus 的类型。
编辑后:你必须准确地说出你在等什么 GSON(见 GSON 适配器),如果你想要你描述的行为,你应该寻找其他方式来交流。
关于java - 找不到枚举时的枚举类映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090395/
我是一名优秀的程序员,十分优秀!