首页 > 解决方案 > 无法为 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)

有人可以帮我摆脱这个吗?在此先感谢大家。

标签: kotlingson

解决方案


问题出在你的声明中..

@JsonInclude(JsonInclude.Include.NON_EMPTY)
data class CustomerAssociate (
        val contactUUID: String,
        val role: UserRole? // instead of your code 'val role: Enum<UserRole>?'
)

推荐阅读