zoukankan      html  css  js  c++  java
  • 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被修改,则反序列化时会失败

     

     
  • 相关阅读:
    HTML 转 PDF 之 wkhtmltopdf 工具精讲
    oracle学习之数据库数据保存成文件
    字体单位大小对照换算表(字号、磅、英寸、像素)
    mui 注意事项
    hbuilder header消失
    C# salt+hash 加密
    判断二个文件是否相同
    html转pdf
    Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值
    【Django】Django 直接执行原始SQL 如何防止SQL注入 ?
  • 原文地址:https://www.cnblogs.com/duanjiapingjy/p/9342548.html
Copyright © 2011-2022 走看看