序列化基础
理解 Java 序列化基础:Serializable 接口、ObjectOutputStream 和 ObjectInputStream。
序列化基础 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 3 节课。
简介
序列化是指将对象的状态保存到文件或流中,并在之后恢复。它常用于持久化或传输对象。
可序列化接口
类必须实现 java.io 中的可序列化接口,其对象才能被序列化。这是一个没有方法的标记接口。
代码:可序列化类
这里的 Person 实现了可序列化接口,因此可以使用 ObjectOutputStream 写入。
import java.io.Serializable;
public class Main {
static class Person implements Serializable {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public String toString() { return name + "(" + age + ")"; }
}
public static void main(String[] args) {
Person p = new Person("Ada", 30);
System.out.println("Created: " + p);
}
}
ObjectOutputStream
ObjectOutputStream 会将对象写入文件。文件中将保存对象的二进制形式。
代码:写入对象
这段代码会将 Person 对象写入名为 person.ser 的文件。
import java.io.*;
public class Main {
static class Person implements Serializable {
String name; int age;
Person(String n,int a){name=n;age=a;}
}
public static void main(String[] args) {
Person p = new Person("Bob",25);
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
out.writeObject(p);
System.out.println("Object written");
} catch(IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
代码:读取对象
这段代码会从文件中读回 Person 对象并将其打印出来。
import java.io.*;
public class Main {
static class Person implements Serializable {
String name; int age;
Person(String n,int a){name=n;age=a;}
public String toString(){return name+"("+age+")";}
}
public static void main(String[] args) {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person p = (Person) in.readObject();
System.out.println("Read: " + p);
} catch(Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
序列化检查
快速检查:类必须执行什么操作才能实现序列化?
回顾
回顾:序列化使用 ObjectOutputStream 保存对象,并使用 ObjectInputStream 恢复对象。类必须实现可序列化接口。
常见问题解答
「序列化基础」课时是免费的吗?
是的 — 「序列化基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 3 节课。
「序列化基础」这节课中我会学到什么?
理解 Java 序列化基础:Serializable 接口、ObjectOutputStream 和 ObjectInputStream。 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「序列化基础」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。