Я использую @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
Я получил ошибку Unable to invoke no-args constructor for class. Register an InstanceCreator with Gson for this type may fix this problem.
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 converter версии 2.3
Моя версия kotlin – 1.1.51
Это известная ошибка? Или я сделал что-то не так?
Плагин компилятора No-arg
Плагин компилятора no-arg генерирует дополнительный конструктор с нулевым аргументом для классов с определенной аннотацией.
Сгенерированный конструктор является синтетическим, поэтому его нельзя напрямую вызывать из Java или Kotlin, но его можно вызвать с помощью отражения.
Это позволяет Java Persistence API (JPA) создавать экземпляр класса данных, хотя он не имеет конструктора нулевого параметра с точки зрения Котлина или Java (см. Описание плагина kotlin-jpa ниже).
Использование в Gradle
Использование довольно похоже на все-открытое.
Добавьте плагин и укажите список аннотаций, которые должны привести к созданию конструктора no-arg для аннотированных классов.
buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version" } } apply plugin: "kotlin-noarg"
Источник https://kotlinlang.org/docs/reference/compiler-plugins.html