Parcelize 抱怨 "Parcelable should be a class" 对象和枚举
Parcelize complains "Parcelable should be a class" on objects and enums
当我尝试用 @Parcelize
注释 enum class
或 object
时,它会导致错误 'Parcelable' should be a class
,这既是编辑器提示,也是编译失败.我可以 @Parcelize
类 就好了,但是我不能做
这样的事情
@Parcelize object MySingletion : Parcelable
@Parcelize enum class Direction : Parcelable { N, E, W, S }
即使 Kotlin 网站 explicitly states 支持对象和枚举,也会发生这种情况。有没有办法解决这个问题,以便我可以 @Parcelize
这些类型的 类?理想情况下,有没有不涉及手动编码 parceler 逻辑的解决方案?
记录的支持意味着,当 class 用作 class 的属性时, 对象和枚举 会得到正确处理 包裹。更重要的是,这两种类型都被隐式排除在使用之外,因为字段必须是在主构造函数中定义的属性:
@Parcelize
requires all serialized properties to be declared in the primary constructor. Android Extensions will issue a warning on each property with a backing field declared in the class body. Also, @Parcelize
can't be applied if some of the primary constructor parameters are not properties.
如果您只需要将 对象或枚举 用作 属性,则没有问题。如果你想将它用作 Parcelable
,你不能绕过自己实现接口,因为这两种类型都是一种单例实现,并且 @Parcelize
只支持具有可访问构造函数和属性的类型.
自 Kotlin 1.2.60 起,CHANGELOG 声明 Parcelize 使用对象和枚举类型。
当我尝试用 @Parcelize
注释 enum class
或 object
时,它会导致错误 'Parcelable' should be a class
,这既是编辑器提示,也是编译失败.我可以 @Parcelize
类 就好了,但是我不能做
@Parcelize object MySingletion : Parcelable
@Parcelize enum class Direction : Parcelable { N, E, W, S }
即使 Kotlin 网站 explicitly states 支持对象和枚举,也会发生这种情况。有没有办法解决这个问题,以便我可以 @Parcelize
这些类型的 类?理想情况下,有没有不涉及手动编码 parceler 逻辑的解决方案?
记录的支持意味着,当 class 用作 class 的属性时, 对象和枚举 会得到正确处理 包裹。更重要的是,这两种类型都被隐式排除在使用之外,因为字段必须是在主构造函数中定义的属性:
@Parcelize
requires all serialized properties to be declared in the primary constructor. Android Extensions will issue a warning on each property with a backing field declared in the class body. Also,@Parcelize
can't be applied if some of the primary constructor parameters are not properties.
如果您只需要将 对象或枚举 用作 属性,则没有问题。如果你想将它用作 Parcelable
,你不能绕过自己实现接口,因为这两种类型都是一种单例实现,并且 @Parcelize
只支持具有可访问构造函数和属性的类型.
自 Kotlin 1.2.60 起,CHANGELOG 声明 Parcelize 使用对象和枚举类型。