当我尝试用enum class注释object@Parcelize时,会导致错误'Parcelable' should be a class,这既是编辑器提示也是编译失败。我可以@Parcelize类很好,但是我不能做类似的事情

@Parcelize object MySingletion : Parcelable
@Parcelize enum class Direction : Parcelable { N, E, W, S }

即使支持对象和枚举的Kotlin网站explicitly states也会发生这种情况。有没有办法解决这个问题,以便我可以对这些类型的类进行@Parcelize?理想情况下,是否存在不涉及手动编码包裹程序逻辑的解决方案?

最佳答案

有据可查的支持意味着,当对象和枚举用作要打包的类的属性时,将得到正确处理。更重要的是,这两种类型都被隐式排除在用法之外,因为字段必须是在主构造函数中定义的属性:



如果只需要将对象或枚举用作属性,则没有任何问题。如果要将其用作Parcelable,则无法独自实现接口(interface),因为这两种类型都是单例实现,并且@Parcelize仅支持具有可访问构造函数且具有属性的类型。

07-26 09:31