當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Serializable用法及代碼示例


可串行化接口存在於java.io包。它是一個Marker。標記接口沒有任何方法和字段。因此實現它的類不必實現任何方法。如果類希望其實例被序列化或反序列化,則類會實現它。序列化是一種將對象的狀態轉換為字節流的機製。序列化是使用完成的ObjectOutputStream。反序列化是相反的過程,其中字節流用於在內存中重新創建實際的 Java 對象。該機製用於持久化對象。反序列化是使用完成的ObjectInputStream。因此,它可用於將其狀態保存到文件中。

聲明

public interface Serializable

例子:下麵的示例顯示了一個實現可序列化接口的類。

Java


// Java Program to demonstrate a class 
// implementing Serializable interface 
  
import java.io.Serializable; 
  
public static class Student implements Serializable { 
    public String name = null; 
    public String dept = null; 
    public int id = 0; 
}

在這裏,您可以看到 Student 類實現了 Serialized,但沒有任何可以從 Serialized 實現的方法。

例子:下麵的示例代碼解釋了序列化和反序列化對象.

Java


// Java program to illustrate Serializable interface 
import java.io.*; 
  
// By implementing Serializable interface 
// we make sure that state of instances of class A 
// can be saved in a file. 
class A implements Serializable { 
    int i; 
    String s; 
  
    // A class constructor 
    public A(int i, String s) 
    { 
        this.i = i; 
        this.s = s; 
    } 
} 
  
public class Test { 
    public static void main(String[] args) 
        throws IOException, ClassNotFoundException 
    { 
        A a = new A(20, "GeeksForGeeks"); 
  
        // Serializing 'a' 
        FileOutputStream fos 
            = new FileOutputStream("xyz.txt"); 
        ObjectOutputStream oos 
            = new ObjectOutputStream(fos); 
        oos.writeObject(a); 
  
        // De-serializing 'a' 
        FileInputStream fis 
            = new FileInputStream("xyz.txt"); 
        ObjectInputStream ois = new ObjectInputStream(fis); 
        A b = (A)ois.readObject(); // down-casting object 
  
        System.out.println(b.i + " " + b.s); 
  
        // closing streams 
        oos.close(); 
        ois.close(); 
    } 
}

輸出:

20 GeeksForGeeks

必讀: Java 中的序列化和反序列化



相關用法


注:本文由純淨天空篩選整理自Ganeshchowdharysadanala大神的英文原創作品 Serializable Interface in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。