bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

java序列化機制的示例分析

這篇文章給大家分享的是有關java序列化機制的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創新互聯專注于朝陽網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供朝陽營銷型網站建設,朝陽網站制作、朝陽網頁設計、朝陽網站官網定制、重慶小程序開發公司服務,打造朝陽網絡公司原創品牌,更為您提供朝陽網站排名全網營銷落地服務。

序列化是指對象通過寫出描述自己狀態的數值來記錄自己的過程,即將對象表示成一系列有序字節,Java提供了將對象寫入流和從流中恢復對象的方法。對象能包含其它的對象,而其它的對象又可以包含另外的對象。Java序列化能夠自動的處理嵌套的對象。對于一個對象的簡單域,writeObject()直接將其值寫入流中。

當遇到一個對象域時,writeObject()被再次調用,如果這個對象內嵌另一個對象,那么,writeObject()又被調用,直到對象能被直接寫入流為止。程序員所需要做的是將對象傳入ObjectOutputStream的writeObject()方法,剩下的將有系統自動完成。

要實現序列化的類必須實現的java.io.Serializable或java.io.Externalizable接口,否則將產生一個NotSerializableException。該接口內部并沒有任何方法,它只是一個"tagging interface",僅僅"tags"它自己的對象是一個特殊的類型。

類通過實現 java.io.Serializable接口以啟用其序列化功能。未實現此接口的類將無法使其任何狀態序列化或反序列化。可序列化類的所有子類型本身都是可序列化的。

序列化接口沒有方法或字段,僅用于標識可序列化的語義。Java的"對象序列化"能讓你將一個實現了Serializable接口的對象轉換成一組byte,這樣日后要用這個對象時候,你就能把這些byte數據恢復出來,并據此重新構建那個對象了。

代碼如下

package stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import javax.security.auth.login.AccountException;

import org.junit.jupiter.api.Test;

/*
 * 對象流
 *   用與存儲和讀取基本數據類型數據 或 對象的處理劉。它的強大之處就是可以把java中的對象轉換成流
 * 
 * */

public class ObjectInputStreamTeat {
  /*
   * 序列化過程:將內存中的java對象保存到磁盤或通過網絡傳輸出去
   * 使用ObjectOutputStream 
   * */
  @Test
  public void testObjectOutputStream() {
    ObjectOutputStream oos = null;
    try {
      oos = new ObjectOutputStream(new FileOutputStream("Object.dat"));
      oos.writeObject(new String("我是中國人"));
      oos.flush();
      
      oos.writeObject(new Person("zsben",1,new Account(2000)));
      oos.flush();
      
    } catch (Exception e) {
      e.printStackTrace();
    }
    finally {
      try {
        if(oos!=null)
          oos.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  
  /*
   * 反序列化:用ObjectInputStream實現
   * */
  @Test
  public void testObjectInputStream() {
    ObjectInputStream ois = null;
    try {
      ois = new ObjectInputStream(new FileInputStream("Object.dat"));
      Object object = ois.readObject();
      String string = (String)object;
      System.out.println(string);
      
      Object object2 = ois.readObject();
      Person person = (Person)object2;
      System.out.println(person);
      
    } catch (Exception e) {
      e.printStackTrace();
    }
    finally {
      try {
        if(ois!=null)
          ois.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}
/*
 * 1.Person類要實現可序列化,必須實現可序列化接口Serializable
 * 2.還需要添加一個最終類屬性UID
 * 3.除了當前Person類需要實現Serializable,還要保證其內部所有屬性都是可序列化的
 *   (默認情況下基本數據類型為可序列化)
 * 對象流不能序列化static 和transient修飾的成員
 * */
class Person implements Serializable{
  public static final long serivalVersionUID = 5432146546351568416L;
  
  private String name;
  private static int age;
  private Account account; 
  @Override
  public String toString() {
    return "Person [name=" + name + ", age=" + age + ", account=" + account + "]";
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
  }
  
  public Person(String name, int age, Account account) {
    super();
    this.name = name;
    this.age = age;
    this.account = account;
  }
  public Person() {
    super();
  }  
}
class Account implements Serializable{
  private double balance;
  static final public long serivalVersionUID = 54685237864535874L;
  @Override
  public String toString() {
    return "Account [balance=" + balance + "]";
  }

  public double getBalance() {
    return balance;
  }

  public void setBalance(double balance) {
    this.balance = balance;
  }

  public Account(double balance) {
    super();
    this.balance = balance;
  }

  public Account() {
    super();
  }
}

感謝各位的閱讀!關于“java序列化機制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網頁題目:java序列化機制的示例分析
當前地址:http://vcdvsql.cn/article14/peecge.html

成都網站建設公司_創新互聯,為您提供App設計動態網站微信公眾號移動網站建設虛擬主機定制開發

廣告

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

h5響應式網站建設