当前位置:  开发笔记 > 编程语言 > 正文

Kotlin中的Android Parcelable

如何解决《Kotlin中的AndroidParcelable》经验,为你挑选了1个好方法。

我有这样的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)
        }
    }
}

arrayOfNullsKwerendaGraficzna在声称收到要求时不会编译KwerendaGraficzna?

那我该怎么做?



1> miensol..:

我怀疑你使用过时版本的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.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有