国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 實例分析java對象的序列化和反序列化

實例分析java對象的序列化和反序列化

2021-06-02 14:07GolLong Java教程

序列化 (Serialization)是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。一般將一個對象存儲至一個儲存媒介,例如檔案或是記億體緩沖等。在網絡傳輸過程中,可以是字節或是XML等格式。而字節的或XML編碼格式可以還原完全

引言:

  序列化是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程,在序列化期間,對象將其帶你過去的狀態寫入到臨時或持儲存區,反序列化就是重新創建對象的過程,此對象來自于臨時或持久儲存區。

序列化的作用:

  就好比如存儲數據到數據庫,將一些數據持久化到數據庫中,而有時候需要將對象持久化,雖然說將對象狀態持久化的方式有很多,但是java給我們提供了一種很便捷的方式,那就是序列化,序列化可以實現對象到文件之間的直接轉換,實現細節對我們隱藏。

  具體的三種用途:
•將對象的狀態信息持久化保存到硬盤上
•將對象信息在網絡上傳輸
•深度克隆(就是序列化后再反序列化)

方式一:實現serializable接口,通過序列化流

  實現serializable接口,通過objectoutputstream和objectinputstream將對象序列化和反序列化。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.io.*;
public class user implements serializable {
  private static final long serialversionuid = 1l;
  private string name;
  private int age;
 
  public user(string name, int age) {
    this.name = name;
    this.age = age;
  }
 
  @override
  public string tostring() {
    return "user{" +
        "name='" + name + '\'' +
        ", age=" + age +
        '}';
  }
 
  public static void main(string[] args) throws ioexception, classnotfoundexception {
//    user user = new user("gol",22);
//    bytearrayoutputstream bo = new bytearrayoutputstream();
//    objectoutputstream oo = new objectoutputstream(bo);
//    oo.writeobject(user);//序列化.user寫入字節數組流中
//    bytearrayinputstream bi = new bytearrayinputstream(bo.tobytearray());
//    objectinputstream oi = new objectinputstream(bi);
//    user userser = (user) oi.readobject();//反序列化
//    system.out.println(userser);
    user user = new user("gol",22);
    fileoutputstream fos = new fileoutputstream("a.txt");
    objectoutputstream oo = new objectoutputstream(fos);
    oo.writeobject(user);//序列化.user寫入文件中
    fileinputstream fis = new fileinputstream("a.txt");
    objectinputstream oi = new objectinputstream(fis);
    user userser = (user) oi.readobject();//反序列化
    system.out.println(userser);
    oi.close();
    fis.close();
    oo.close();
    fos.close();
  }
}

方式二:實現externalizable接口,重寫writeexternal和readexternal方法

  externalizable接口繼承了serializable接口,替我們封裝了兩個方法,一個用于序列化,一個用于反序列化。這種方式是將屬性序列化,注意這種方式transient修飾詞將失去作用,也就是說被transient修飾的屬性,只要你在writeexternal方法中序列化了該屬性,照樣也會得到序列化。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.io.*;
public class user implements externalizable {
  private static final long serialversionuid = 1l;
  private string name;
  private int age;
 
  public user() {
  }
 
  public user(string name, int age) {
    this.name = name;
    this.age = age;
  }
  @override
  public string tostring() {
    return "user{" +
        "name='" + name + '\'' +
        ", age=" + age +
        '}';
  }
 
  @override
  public void writeexternal(objectoutput out) throws ioexception {
    out.writeobject(this.name);//將屬性分別序列化
    out.writeobject(this.age);
  }
 
  @override
  public void readexternal(objectinput in) throws ioexception, classnotfoundexception {
    this.name=(string)in.readobject();//反序列化屬性
    this.age=(int)in.readobject();
  }
 
  public static void main(string[] args) throws ioexception, classnotfoundexception {
    fileoutputstream fos = new fileoutputstream("a.txt");
    objectoutputstream oo = new objectoutputstream(fos);
    fileinputstream fis = new fileinputstream("a.txt");
    objectinputstream oi = new objectinputstream(fis);
    user user = new user("gol",19);
    user.writeexternal(oo);//序列化
    user userenr = new user();
    userenr.readexternal(oi);//反序列化
    system.out.println(userenr);
    oi.close();
    fis.close();
    oo.close();
    fos.close();
  }
}

總結:

注意以下三點:

•serializable接口是標記接口,是個空接口,用于標識該類可以被序列化。
•transient是屬性修飾符,被其修飾的屬性將不會被序列化,但是使用方式二的話,明確寫明該屬性序列化同樣可以得到序列化。
•serialversionuid屬性是類的序列化標識id,若序列化的對象和反序列化的對象其serialversionuid屬性不一樣則會報錯。

原文鏈接:https://www.cnblogs.com/gollong/p/9669515.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品国产乱码久久久久久影片 | 亚洲一区二区视频 | 亚洲人成在线播放 | 简单av网 | 午夜视频在线观看网站 | av成人在线观看 | 精品一区二区三区中文字幕 | 91婷婷射 | 国内精品久久久久久中文字幕 | 成人在线精品视频 | 国产一区视频在线 | 中文字幕一区在线观看视频 | 香蕉av在线 | 亚洲影视一区 | 在线不卡a资源高清 | 亚洲福利一区二区 | 久久亚洲精品中文字幕 | 超碰伊人网 | 国产一区二区精品在线观看 | 欧美日韩久久精品 | 亚洲精品九九 | 午夜在线 | 国产精品久久久久久久久晋中 | 国产精品久久久久久久久 | 久久一区| 国产精品日韩高清伦字幕搜索 | 五月激情综合 | 99久久精品一区二区成人 | 亚洲精品乱码久久久久久麻豆不卡 | 亚洲精品日本 | 亚洲国产中文字幕 | 欧美日韩国产精品一区 | 日本少妇一区二区三区 | 精品国产髙清在线看国产毛片 | 99精品欧美一区二区三区综合在线 | 久久精彩免费视频 | 四虎成人免费电影 | 日韩在线免费视频 | 亚洲一区二区三区高清 | 91久久精品国产91久久性色tv | 久久精品免费一区二区三区 |