面试题答案
一键面试Java序列化概念
Java序列化是将对象转换为字节序列的过程,以便可以将其存储到文件、数据库,或通过网络传输。反序列化则是相反的过程,将字节序列恢复为对象。通过实现java.io.Serializable
接口,类表明其对象可以被序列化。
将对象保存到文件(序列化)
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
class MySerializableClass implements java.io.Serializable {
private static final long serialVersionUID = 1L;
String data;
public MySerializableClass(String data) {
this.data = data;
}
}
public class SerializeExample {
public static void main(String[] args) {
MySerializableClass object = new MySerializableClass("Hello, Serialization!");
try (FileOutputStream fileOut = new FileOutputStream("serializedObject.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut)) {
out.writeObject(object);
System.out.println("Object has been serialized");
} catch (IOException e) {
e.printStackTrace();
}
}
}
从文件读取并反序列化恢复对象
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class DeserializeExample {
public static void main(String[] args) {
try (FileInputStream fileIn = new FileInputStream("serializedObject.ser");
ObjectInputStream in = new ObjectInputStream(fileIn)) {
MySerializableClass object = (MySerializableClass) in.readObject();
System.out.println("Object has been deserialized: " + object.data);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}