欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java中如何實(shí)現(xiàn)對象的序列化和反序列化-創(chuàng)新互聯(lián)

這篇文章給大家介紹java中如何實(shí)現(xiàn)對象的序列化和反序列化,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

深圳網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,深圳網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為深圳上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的深圳做網(wǎng)站的公司定做!

引言:

  序列化是將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程,在序列化期間,對象將其帶你過去的狀態(tài)寫入到臨時(shí)或持儲存區(qū),反序列化就是重新創(chuàng)建對象的過程,此對象來自于臨時(shí)或持久儲存區(qū)。

序列化的作用:

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

  具體的三種用途:
?將對象的狀態(tài)信息持久化保存到硬盤上
?將對象信息在網(wǎng)絡(luò)上傳輸
?深度克?。ň褪切蛄谢笤俜葱蛄谢?/p>

方式一:實(shí)現(xiàn)Serializable接口,通過序列化流

  實(shí)現(xiàn)Serializable接口,通過ObjectOutputStream和ObjectInputStream將對象序列化和反序列化。

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寫入字節(jié)數(shù)組流中
//    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();
  }
}

方式二:實(shí)現(xiàn)Externalizable接口,重寫writeExternal和readExternal方法

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

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();
  }
}

總結(jié):

注意以下三點(diǎn):

?Serializable接口是標(biāo)記接口,是個(gè)空接口,用于標(biāo)識該類可以被序列化。
?transient是屬性修飾符,被其修飾的屬性將不會被序列化,但是使用方式二的話,明確寫明該屬性序列化同樣可以得到序列化。
?serialVersionUID屬性是類的序列化標(biāo)識ID,若序列化的對象和反序列化的對象其serialVersionUID屬性不一樣則會報(bào)錯(cuò)。

關(guān)于java中如何實(shí)現(xiàn)對象的序列化和反序列化就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:java中如何實(shí)現(xiàn)對象的序列化和反序列化-創(chuàng)新互聯(lián)
本文鏈接:http://www.aaarwkj.com/article16/dsisdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司動態(tài)網(wǎng)站、網(wǎng)站制作、網(wǎng)站收錄微信公眾號、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
成人精品播放视频在线观看| 91精品国产91久久综合桃花| 日本91一区二区不卡| 91精品人妻一区二区| 欧美成人精品欧美一级乱| 久久亚洲中文字幕精品一区四区| 日韩av黄色大片在线播看| 亚洲国产成人精品av在线| 欧美一级特黄大片做受另类| 亚洲蜜桃精品一区二区三区 | 欧洲一区二区三区黄色| 国内一级片内射视频播放| 暖暖免费中文高清日本三区| 欧美日韩在线不卡一区| 亚洲中文字幕偷拍色图| 不用播放器的av蜜臀| 日韩国产传媒视频在线观看| 亚洲成av人片又粗又长| 蜜臀人妻久久一区二区三| 久久久久精品激情三级| 成人免费在线视频不卡| 日本在线精品在线观看| 国产精品一品二区三区在线观看| 国产精品欧美一区二区视频| 亚洲国产精品自拍视频| 国产原创剧情av网址| 精品国产一区二区日韩91| 亚洲精品一区二区三区pp| 美女性生活免费视频网站 | 久久se精品一区精品二区国产 | 精品熟女少妇av免费观看| 男人的天堂av免费看看| 五月婷婷丁香视频在线| 91精品在线观看首页| 一本之道久久成人综合| 国产午夜视频成人无遮挡| 欧美日韩精品一区二区在线| 欧洲亚洲精品免费二区| 亚洲精品国产熟女高潮| 国产国产成年年人免费看片| 粉嫩av一区二区三区四区|