• Java实现序列化的作用和目的


     1 package model;
     2 
     3 import java.io.ObjectStreamField;
     4 import java.io.Serializable;
     5 
     6 /**
     7  * @author liangd
     8  * date 2020-11-12 16:16
     9  * code 实例化字段
    10  */
    11 public class UserModel implements Serializable {
    12     /*
    13      * 实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。
    14      * 如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。
    15      *
    16      * serialVersionUID作用:
    17      * 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
    18      *
    19      * 生成serialVersionUID的两种方式
    20      * 1、默认的1L
    21      * 2、根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段
    22      */
    23     //默认
    24 //    private static final long serialVersionUID = 1L;
    25     private static final long serialVersionUID = -8940196742313994740L;
    26     private int id;
    27     //被transient修饰的字段不会被实例化
    28 //    private transient String username;
    29     private int age;
    30     private int sex;
    31     private String address;
    32 
    33     /**
    34      * 序列化字段的两种方式:
    35      * 1、默认方式,Java对象中的非静态和非transient的字段都会被定义为需要序列的字段。
    36      * 2、另外一种方式是通过 ObjectStreamField 数组来声明类需要序列化的对象。
    37      */
    38     private static final ObjectStreamField[] serialPersistentFields = {
    39             new ObjectStreamField("username", String.class),
    40             new ObjectStreamField("age", int.class)
    41     };
    42     /*
    43         Java 中进行序列化操作需要实现 Serializable 或 Externalizable 接口。
    44         序列化的目的有两个,第一个是便于存储,第二个是便于传输。
    45         一、序列化作用:
    46            1、 提供一种简单又可扩展的对象保存恢复机制。
    47            2、 对于远程调用,能方便对对象进行编码和解码,就像实现对象直接传输。
    48            3、 可以将对象持久化到介质中,就像实现对象直接存储。
    49            4、 允许对象自定义外部存储的格式。
    50 
    51         二、何时需要实现序列化
    52           在存储时需要序列化
    53 
    54         三、平常实体类没有实现Serializable接口,怎么也能存进数据库呢?
    55           是因为在声明变量的时候,例如String、int、Boolean等时,数据类型已经实现了序列化
    56      */
    57 }
    作者:donleo123
    本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
  • 相关阅读:
    【ASP.NET 进阶】根据IP地址返回对应位置信息
    【网络文摘】编程的智慧
    【ASP.NET 类库】当你懒得用 Json+Ajax 时,可以试试 AjaxPro
    【iOS 初见】第一个简单的 iOS 应用
    【C#】C# 实现发送手机短信
    【网络文摘】一家公司要了你后,凭什么给你开高工资?
    深入理解Java虚拟机01--概述
    Java虚拟机(五)Java的四种引用级别
    OkHttp3源码详解(六) Okhttp任务队列工作原理
    OkHttp3源码详解(五) okhttp连接池复用机制
  • 原文地址:https://www.cnblogs.com/donleo123/p/14069066.html
Copyright © 2020-2023  润新知