Kotlin 与 gson 的分割问题

标签 kotlin gson parcelable json-deserialization

我正在使用 @parcelize 作为 gson

这是我的课

@Parcelize
data class CommunityModel(@SerializedName("post") val post: PostModel,
                                   @SerializedName("is_liked") val isLiked: Boolean,
                                   @SerializedName("post_like") val postLike: QuestionModel,
                                   @SerializedName("polling_options") val pollingOptions: List<PollingModel>,
                                   @SerializedName("post_polled") val postPolled: Boolean) : Parcelable

我收到错误无法调用类的无参数构造函数。向 Gson 注册此类型的 InstanceCreator 可能会解决此问题。

但此错误仅出现在旧版 Android 版本(5.0 以下)

我尝试实现默认构造函数:

constructor: this(PostModel(), true, QuestionModel(), emptyList(), true)

但它给了我 java.lang.VerifyError 相反

我正在将retrofit2与rxjava2和gson转换器版本2.3一起使用

我的 kotlin 版本是1.1.51

这是已知的错误吗?还是我做错了什么?

最佳答案

无参数编译器插件

无参数编译器插件为具有特定注释的类生成额外的零参数构造函数。

生成的构造函数是合成的,因此不能直接从 Java 或 Kotlin 调用,但可以使用反射调用。

这允许 Java Persistence API (JPA) 实例化数据类,尽管从 Kotlin 或 Java 的角度来看,它没有零参数构造函数(请参阅下面的 kotlin-jpa 插件的描述)。

在 Gradle 中使用

用法与全开放非常相似。

添加插件并指定注释列表,这些注释必须为带注释的类生成无参数构造函数。

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"

来源https://kotlinlang.org/docs/reference/compiler-plugins.html

关于Kotlin 与 gson 的分割问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405337/

相关文章:

android - 如何在 Bundle 中发送 RealmObject?

java - 将arraylist从一个 Activity 传递到另一个 Activity 的 fragment

java - 如何使 kotlin 中的主要 java 方法更简单?

java - 从 Java 访问 Kotlin 扩展函数

Kotlin 流程顺序异步处理

Android:将对象从集合小部件传递到 Activity

android - 尝试将 mutableListOf<String> 存储到 SharedPreferences 但无法设置默认值

java - 使用 Gson 序列化 JSON 时包裹某些值

java - 无法解析方法 'fromJson(org.json.JSONObject, java.lang.Class<me.myrottentomatoes.Result[]>)'

android - gson.fromjson 返回 null