String, val bar : Int) : Extras(), Parcelable { companion object { @JvmField @Suppress("unused") val CREATOR: Parcelable.Creator<Foo> = object : Parcelable.Creator<Foo> { override fun createFromParcel(source: Parcel): Foo = Foo(source) override fun newArray(size: Int): Array<Foo?> = arrayOfNulls(size) } } protected constructor(parcelIn: Parcel) : this(parcelIn.readString(), parcelIn.readInt()) override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeString(foo) dest?.writeInt(bar) } override fun describeContents(): Int = 0 } data class Hoge(val hoge : String, val fuga : String) : Extras(), Parcelable { companion object { @JvmField @Suppress("unused") val CREATOR: Parcelable.Creator<Hoge> = object : Parcelable.Creator<Hoge> { override fun createFromParcel(source: Parcel): Hoge = Hoge(source) override fun newArray(size: Int): Array<Hoge?> = arrayOfNulls(size) } } protected constructor(parcelIn: Parcel) : this(parcelIn.readString(), parcelIn.readString()) override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeString(hoge) dest?.writeString(fuga) } override fun describeContents(): Int = 0 } } 論外