Kotlin 序列化Parcelable/Serializable

举报
yechaoa 发表于 2022/05/31 00:17:03 2022/05/31
【摘要】 开发中,序列化是常见操作,在java中,我们一般会用到Serializable或者Parcelable,优缺点就不赘述了,今天来看看kotlin中的序列化。 Parcelable 1.添加配置 ap...

开发中,序列化是常见操作,在java中,我们一般会用到Serializable或者Parcelable,优缺点就不赘述了,今天来看看kotlin中的序列化。

Parcelable

1.添加配置

app目录下的build.gradle文件

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.添加注解并实现Parcelable

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

  
 
  • 1
  • 2

以上就完成了序列化。就这么简单。


3.泛型序列化

我们在实际开发中经常会对bean对象做抽取,这里就涉及到了泛型序列化。

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里需要注意的是泛型也要实现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);
    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

可以看到还是有writeToParcel方法和Creator等,其实也没少,只是不再需要我们去写了。

Serializable

Serializable的方式比较简单,直接实现Serializable就可以了

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

  
 
  • 1
  • 2
  • 3
  • 4

文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/103894538

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。