• transient关键字


    序列化:将一个对象转换成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。

    反序列化:将字节数组重新构造成对象。

    序列化只需要实现java.io.Serializable接口

    serialVersionUID参数

    在运行时判断类的serialVersionUID来验证版本一致性

    反序列化时,Java虚拟机会把传过来的字节流中的serialVersionUID和本地相应实体类的serialVersionUID进行比较, 如果相同就认为是一致的实体类,可以进行反序列化,否则Java虚拟机会拒绝对这个实体类进行反序列化并抛出异常。

    如果实现 java.io.Serializable接口的实体类没有显式定义一个名为serialVersionUID、类型为long的变量时,Java序列化机制会根据编译的.class文件自动生成一个serialVersionUID

    如果.class文件没有变化,那么就算编译再多次,serialVersionUID也不会变化

     

     

    1、序列化之后保存的是类的信息

    2、被声明为transient的属性不会被序列化,这就是transient关键字的作用

    3、被声明为static的属性不会被序列化

      序列化保存的是对象的状态,但是static修饰的变量是属于类的而不是属于具体事例的,因此序列化的时候不会序列化它

    1、当父类继承Serializable接口时,所有子类都可以被序列化

    2、子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据丢失),但是在子类中属性仍能正确序列化

    3、如果序列化的属性是对象,则这个对象也必须实现Serializable接口,否则会报错

    4、反序列化时,如果对象的属性有修改或删减,则修改的部分属性会丢失,但不会报错

    5、反序列化时,如果serialVersionUID被修改,则反序列化时会失败

     

     
  • 相关阅读:
    android高级页面效果集锦
    2018年Android的保活方案效果统计
    程序员如何预估自己的项目开发时间?
    Google开发者大会:你不得不知的Tensorflow小技巧
    练就Java24章真经—你所不知道的工厂方法
    一个完整Java Web项目背后的密码
    怎么捕获和记录SQL Server中发生的死锁
    使用跟踪标志位分析死锁
    通过SQL Server Profiler来监视分析死锁
    SQL Server中的死锁
  • 原文地址:https://www.cnblogs.com/duanjiapingjy/p/9342548.html
Copyright © 2020-2023  润新知