開發中,序列化是常見操作,在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