美文网首页
序列化-Serializable和Pracelable

序列化-Serializable和Pracelable

作者: 洛草为王 | 来源:发表于2020-04-02 15:27 被阅读0次

    什么是序列化?

    序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式(二进制字节流)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

    • 序列化:内存中的对象 -> 磁盘
    • 反序列化:磁盘 -> 内存中的对象

    序列化方式

    • Serializable: java提供的
    • Parcelable:android提供的

    Serializable和Parcelable的区别

    • 存储媒介
      Serializable使用IO读写存储在硬盘上。序列化过程使用了反射技术,并且期间产生临时对象。优点实现简单,缺点性能低。
      Parcelable是直接在一块共享内存中读写。优点性能好,缺点实现复杂。

    • 使用场景
      Serializable:持久化,网络传输或者本地文件存储
      Parcelable:临时内存中传输,比如activity间的传输

    Serializable使用注意事项

    • Serializable在是实现时需要设置serialVersionUID,作用是验证版本的一致性。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本不一致的异常,即是InvalidCastException。
    • serialVersionUID两种显示的生成方式:
      1.默认1L,比如:private static final long serialVersionUID = 1L;
      2.根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = xxxxL;
    • Seralizable无法序列化静态变量,使用transient修饰的对象也无法序列化。
    • 当父类实现序列化,子类自动实现序列化。

    相关文章

      网友评论

          本文标题:序列化-Serializable和Pracelable

          本文链接:https://www.haomeiwen.com/subject/ulpxphtx.html