我正在使用@parcelize for 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
我收到错误Unable to invoke no-args constructor for class. Register an InstanceCreator with Gson for this type may fix this problem.
。
但此错误仅出现在较旧的Android版本(低于5.0)
我尝试了实现默认构造函数:
constructor: this(PostModel(), true, QuestionModel(), emptyList(), true)
但它给了我java.lang.VerifyError
而不是
我正在使用retrofit2和rxjava2和gson转换器版本 2.3
我的kotlin版本 1.1.51
它知道bug吗?或者我做错了什么?
答案 0 :(得分:2)
No-arg编译器插件
no-arg编译器插件为具有特定注释的类生成额外的零参数构造函数。
生成的构造函数是合成的,因此不能直接从Java或Kotlin调用,但可以使用反射调用它。
这允许Java Persistence API(JPA)实例化数据类,尽管从Kotlin或Java的角度来看它没有零参数构造函数(参见下面的kotlin-jpa插件的描述)。 / p>
在Gradle中使用
用法非常类似于全开。
添加插件并指定注释列表,这些注释必须导致为带注释的类生成无参数构造函数。
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
}
}
apply plugin: "kotlin-noarg"
来源https://kotlinlang.org/docs/reference/compiler-plugins.html