有没有办法将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 类必须具有默认的空构造函数。实现这一目标的一种方法是如上所述 - 所有变量都应具有默认值。