Android可以在Kotlin下载
我有这样的Java parcelable:
@SuppressWarnings("rawtypes") public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public KwerendaGraficzna createFromParcel(Parcel in) { return new KwerendaGraficzna(in); } public KwerendaGraficzna[] newArray(int size) { return new KwerendaGraficzna[size]; } };
现在试图在Kotlin中实现它:
companion object { @SuppressWarnings("rawtypes") val CREATOR: Parcelable.Creator<KwerendaGraficzna!> = object : Parcelable.Creator<KwerendaGraficzna!> { override fun createFromParcel(`in`: Parcel): KwerendaGraficzna { return KwerendaGraficzna(`in`) } override fun newArray(size: Int): Array<KwerendaGraficzna!> { return arrayOfNulls<KwerendaGraficzna!>(size) } } }
arrayOfNulls
不会编译需要KwerendaGraficzna
而它声称它收到KwerendaGraficzna?
那我该怎么做呢?
我怀疑你正在使用Kotlin编译器的过时版本(因为你使用!
)。 这里有一个版本正确编译与最新版本:
companion object { @JvmField val CREATOR = object : Parcelable.Creator<KwerendaGraficzna> { override fun createFromParcel(`in`: Parcel): KwerendaGraficzna { return KwerendaGraficzna(`in`) } override fun newArray(size: Int): Array<KwerendaGraficzna?> { return arrayOfNulls(size) } } }
由于Parcelable.Creator
需要一个公共静态字段,我们需要用@JvmField
和JvmStatic
标记CREATOR
属性。