当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。