我有这样的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= object : Parcelable.Creator { override fun createFromParcel(`in`: Parcel): KwerendaGraficzna { return KwerendaGraficzna(`in`) } override fun newArray(size: Int): Array { return arrayOfNulls (size) } } }
arrayOfNulls
KwerendaGraficzna
在声称收到要求时不会编译KwerendaGraficzna?
那我该怎么做?
我怀疑你使用过时版本的Kotlin编译器(因为你使用!
).这是一个使用最新版本正确编译的版本:
companion object { @JvmField val CREATOR = object : Parcelable.Creator{ override fun createFromParcel(`in`: Parcel): KwerendaGraficzna { return KwerendaGraficzna(`in`) } override fun newArray(size: Int): Array { return arrayOfNulls(size) } } }
由于Parcelable.Creator
需要公共静态字段,我们需要CREATOR
使用@JvmField
和标记属性JvmStatic
.