Есть ли способ использовать Parceler с классами данных и конструктором данных Kotlin для сериализации без использования аннотации @ParcelProperty
для каждого поля?
Если я попытаюсь использовать библиотеку следующим образом:
@Parcel
data class Valve @ParcelConstructor constructor(val size: Int)
Я получаю Error:Parceler: No corresponding property found for constructor parameter arg0
. Но если я добавлю @ParcelProperty("size")
, то все будет отлично.
Почему это?
Обновление:
Есть и другой способ использования этой библиотеки.
Я мог бы просто удалить аннотацию @ParcelConstructor
, но тогда я получу ошибку Error:Parceler: No @ParcelConstructor annotated constructor and no default empty bean constructor found.
Я думаю (не проверял его), я также мог бы сделать все параметры конструктора необязательными и добавить @JvmOverloads
, но у меня есть побочный эффект, который я должен проверить на все свойства класса, если они являются нулевыми или нет.
Обновление 2:
Это то, что сработало для меня:
@Parcel
data class Valve(val size: Int? = null)
В коротком сгенерированном классе Java должен быть пустой конструктор по умолчанию. Один из способов добиться этого - сделать так, как указано выше - все переменные должны иметь значения по умолчанию.