我正在开发一个 Android 应用程序,我从具有两个属性的 API 获取一些数据 - 一个是描述数据的枚举,另一个是值。我遇到的问题是该值可以是不同的类型,具体取决于它对应的枚举。 API 返回如下所示的 JSON:
[ {type: name, value: "bob"}, {type: height, value: 70}, {type: weight, value: 160.25}, {type: metric, value: false} ]
所以我有一个看起来像这样的数据对象:
data class Info(val type: InfoType, val value: (Not sure what to do here))
其中
InfoType
是一个枚举,看起来像:
enum class InfoType { NAME, HEIGHT, WEIGHT, METRIC }
我该如何处理这些数据?有没有办法根据
value
的内容设置 InfoType
数据类型?
Info 不应该是数据类。 应该是密封接口。
sealed interface Info {
data class NameInfo(val name: String): Info
data class HeightInfo(val height: Int): Info
...
}
您不需要保留类型,因为该类型由您使用的子类型保存。 如果您需要一个接受其中任何一个的变量,请使用 Info. 反序列化时,根据值选择要实例化的子类型。