Android Parcelable в Котлине

У меня есть такая Java:

@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]; } }; 

Теперь, пытаясь реализовать его в Котлине:

 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 требует публичного статического поля, нам нужно отметить свойство CREATOR с помощью @JvmField и JvmStatic .