gpt4 book ai didi

java - 找不到枚举时的枚举类映射问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:30 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com