kotlin - 无法为 java.lang.Enum 调用无参数构造函数
问题描述
我在 Kotlin 中面临一个枚举问题。问题似乎很愚蠢,但可能是我缺少一些代码片段来使其工作。这是我的 json 数据
"CustomerData": [
{
"token": "token_data1",
"role": "Admin"
},
{
"contactUUID": "token_data2",
"role": "User"
}
]
一个 Kotlin 数据类如下
@JsonInclude
enum class UserRole(val userRoleDesc: String) {
@SerializedName("Admin")
ADMIN("Admin"),
@SerializedName("User")
USER("User"),
@SerializedName("unknown")
UNKNOWN("unknown");
}
我正在使用这个枚举类,如下所示
@JsonInclude(JsonInclude.Include.NON_EMPTY)
data class CustomerAssociate (
val contactUUID: String,
val role: Enum<UserRole>?
)
但我得到以下错误
java.lang.RuntimeException: Unable to invoke no-args constructor for java.lang.Enum<T>. Registering an InstanceCreator with Gson for this type may fix this problem.
at com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:228)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:212)
有人可以帮我摆脱这个吗?在此先感谢大家。
解决方案
问题出在你的声明中..
@JsonInclude(JsonInclude.Include.NON_EMPTY)
data class CustomerAssociate (
val contactUUID: String,
val role: UserRole? // instead of your code 'val role: Enum<UserRole>?'
)
推荐阅读
- c# - 在应用程序启动时加载区域
- python - 使用 Pytorch 实现 FFT
- three.js - LoadingManager 错误的要加载的项目总量
- java - 一个组件需要一个找不到的 ObjectPostProcessor 类型的 bean
- c - MQTT Last will 不保留
- javascript - 在 Javascript 中重置 FilePond 输入
- php - 通过切换到 php 7.2.19 在 include_once 上获取 FATAL ERROR
- mysql - 有人可以告诉我为什么这个查询不起作用吗?
- amazon-iam - 在 ASK CLI v2 中指定角色
- neo4j - 根据坐标计算距离