Parcelable Interface - PullRequest
       37

Parcelable Interface

0 голосов
/ 11 апреля 2020
public static final Parcelable.Creator<MyPacelable> CREATOR = new Parcelable.Creator<MyParcelable>()

Я взял код выше с сайта. Он говорит, что мы должны создать константу CREATOR, чтобы заставить Parcelable работать. Но я думал, что Parcelable - это интерфейс, и мы не можем создать объект из интерфейса. Так что я не понимаю код, который выглядит как конструктор для создания объекта?

Спасибо

1 Ответ

0 голосов
/ 11 апреля 2020

Боюсь, код, который вы цитируете, является неполным. CREATOR требуется, чтобы инфраструктура могла создавать ваш объект при десериализации, обратите внимание, что это универсальный c интерфейс, а предоставленный вами параметр типа - «MyParcelable», поэтому его метод «createFromParcel» имеет тип возврата «MyParcelable». , так что вы можете создать в нем экземпляр MyParcelable. как это:

public static final Parcelable.Creator<MyPacelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
    public MyParcelable createFromParcel(Parcel in) {
        return new MyParcelable(in);
    }

    public MyParcelable[] newArray(int size) {
        return new MyParcelable[size];
    }
};
...