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需要一个公共静态字段,我们需要用@JvmFieldJvmStatic标记CREATOR属性。