开发中,序列化是常见操作,在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