可串行化接口存在於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 中的序列化和反序列化
相關用法
- Java SecurityManager checkAccept()用法及代碼示例
- Java SecurityManager checkAccess()用法及代碼示例
- Java SecurityManager checkAwtEventQueueAccess()用法及代碼示例
- Java SecurityManager checkConnect()用法及代碼示例
- Java SecurityManager checkDelete()用法及代碼示例
- Java SecurityManager checkExec()用法及代碼示例
- Java SecurityManager checkExit()用法及代碼示例
- Java SecurityManager checkLink()用法及代碼示例
- Java SecurityManager checkListen()用法及代碼示例
- Java SecurityManager checkMemberAccess()用法及代碼示例
- Java SecurityManager checkMulticast()用法及代碼示例
- Java SecurityManager checkPackageAccess()用法及代碼示例
- Java SecurityManager checkPackageDefinition()用法及代碼示例
- Java SecurityManager checkPermission()用法及代碼示例
- Java SecurityManager checkPrintJobAccess()用法及代碼示例
- Java SecurityManager checkPropertiesAccess()用法及代碼示例
- Java SecurityManager checkPropertyAccess()用法及代碼示例
- Java SecurityManager checkRead()用法及代碼示例
- Java SecurityManager checkSecurityAccess()用法及代碼示例
- Java SecurityManager checkSetFactory()用法及代碼示例
- Java SecurityManager checkSystemClipboardAccess()用法及代碼示例
- Java SecurityManager checkTopLevelWindow()用法及代碼示例
- Java SecurityManager checkWrite()用法及代碼示例
- Java SecurityManager getClassContext()用法及代碼示例
- Java SecurityManager getSecurityContext()用法及代碼示例
注:本文由純淨天空篩選整理自Ganeshchowdharysadanala大神的英文原創作品 Serializable Interface in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。