Kotlin 序列化Parcelable/Serializable

開發中,序列化是常見操作,在java中,我們一般會用到Serializable或者Parcelable,優缺點就不贅述了,今天來看看kotlin中的序列化。

Parcelable

1.添加配置

app目錄下的build.gradle文件

android {
    ...
    androidExtensions {
        experimental = true
    }
}

2.添加註解並實現Parcelable

@Parcelize
data class User(val name: String) : Parcelable

以上就完成了序列化。就這麼簡單。


3.泛型序列化

我們在實際開發中經常會對bean對象做抽取,這裏就涉及到了泛型序列化。

@Parcelize
data class BaseBean<T : Parcelable>(
    val errorMsg: String,
    val errorCode: Int,
    val data: T
) : Parcelable

這裏需要注意的是泛型也要實現Parcelable,即<T : Parcelable>


Parcelable源碼

public interface Parcelable {
    int CONTENTS_FILE_DESCRIPTOR = 1;
    int PARCELABLE_WRITE_RETURN_VALUE = 1;

    int describeContents();

    void writeToParcel(Parcel var1, int var2);

    public interface Creator<T> {
        T createFromParcel(Parcel var1);

        T[] newArray(int var1);
    }

    public interface ClassLoaderCreator<T> extends Parcelable.Creator<T> {
        T createFromParcel(Parcel var1, ClassLoader var2);
    }
}

可以看到還是有writeToParcel方法和Creator等,其實也沒少,只是不再需要我們去寫了。

Serializable

Serializable的方式比較簡單,直接實現Serializable就可以了

data class User( 
    val id: Int,
    val name: String
) : Serializable

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章