我读到,由于 Scala 编译器的魔力,可以在 Scala 中实现 Android Parcelable 模式(需要静态类成员)。然而,关于这方面的信息很少,我不确定......
- ...如果这是真的
- ...如果我必须处理某些事情(例如设置编译器标志?)
- ...
CREATOR
字段所在的位置(类或同伴?)以及如何定义它(def、val、var?)
我尝试了各种组合,但最终总是出现异常,告诉我 CREATOR
字段丢失。
最佳答案
至少在 Scala 2.11.2 中,CREATOR
字段会进入伴生对象:
class ParcelExample( val some: String, val arbitrary: Int, val values: Boolean ) extends Parcelable
{
override def describeContents() = 0
override def writeToParcel( dest: Parcel, flags: Int )
{
dest.writeString( some )
dest.writeInt( arbitrary )
dest.writeValue( values )
}
}
object ParcelExample
{
val CREATOR: Parcelable.Creator[ParcelExample] = new Parcelable.Creator[ParcelExample]
{
override def createFromParcel( source: Parcel ): ParcelExample = new ParcelExample(
source.readString(),
source.readInt(),
source.readValue( classOf[Boolean].getClassLoader ).asInstanceOf[Boolean]
)
override def newArray( size: Int ): Array[ParcelExample] = new Array[ParcelExample]( size )
}
}
我创建了一个 scala 宏,用于生成可分割的样板 https://github.com/taig/parcelable
关于android - Scala 支持 Android 的 Parcelables 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136806/