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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM