我正在使用 @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/