将Java Parcel创建者代码转换为Kotlin

时间:2017-06-07 14:52:45

标签: kotlin

我试图将我的Parcel Creator代码从Java转换为Kotlin。自动代码转换器在此失败,我不知道如何解决它。我转换的代码是:

public static final Creator<Save> CREATOR = new Creator<Save>() {

    @Override
    public Save[] newArray(int size) {
        return new Save[size];
    }

    @Override
    public Save createFromParcel(Parcel incoming) {
        return new Save(incoming);
    }
};

我最终得到了这个:

val CREATOR: Parcelable.Creator<Save> = object : Parcelable.Creator<Save> {

    override fun newArray(size: Int): Array<Save> {
        return arrayOfNulls(size)
    }

    override fun createFromParcel(incoming: Parcel): Save {
        return Save(incoming)
    }
}

出现错误,提示&#39;类型推断失败&#39; for arrayOfNulls(size)。我已经尝试将其更改为保存(大小),但这也不起作用。任何想法?

2 个答案:

答案 0 :(得分:2)

在这种情况下,

arrayOfNulls将返回一个可空元素数组Array<Save?>。您应该更改函数的返回类型以匹配它。

override fun newArray(size: Int): Array<Save?> {
    return arrayOfNulls(size)
}

答案 1 :(得分:0)

您可以尝试使用this插件来做Parcelable,只是建议,我从未尝试过,但在谷歌搜索时遇到过。