Java 序列化(Serialization)简单来说,就是把 Java 对象转换成字节流,反过来再把字节流恢复成 Java 对象(反序列化)。
它的主要用途可以从下面几个方面理解:
把内存中的对象保存到文件或数据库中,下次程序启动时还能恢复。
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("user.dat"));
oos.writeObject(user);
oos.close();
适用场景:
在分布式系统中,把对象从一台机器传到另一台机器。
典型场景:
// 服务端把对象发给客户端
socket.getOutputStream().write(序列化后的字节);
比如:
通过序列化 + 反序列化实现对象的“深拷贝”。
User copy = deserialize(serialize(user));
import java.io.Serializable;
public class User implements Serializable {
private String name;
private int age;
}
// 序列化
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("a.bin"));
oos.writeObject(user);
// 反序列化
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("a.bin"));
User u = (User) ois.readObject();
❌ 效率低(慢、体积大)
❌ 安全风险(反序列化漏洞)
❌ 跨语言差(只能 Java 用)
所以现在更常用:
✅ 简单本地 demo
✅ 老系统 / RMI
✅ 不跨语言、不追求性能
❌ 高并发
❌ 跨语言
❌ 安全敏感系统
如果你愿意,我也可以:
transient / serialVersionUID你想看哪块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。