Java 序列化機制允許將實現 `Serializable` 介面的對象寫入檔案或網路流,後續可還原為記憶體對象。這是 RMI、分散式會話、緩存同步等場景的基石。
import java.io.*;
public class ObjectStreamDemo {
public static void main(String[] args) throws Exception {
writeObj();
readObj();
}
public static void writeObj() throws IOException {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.object"))) {
oos.writeObject(new Person("taoshihan", 100));
}
}
public static void readObj() throws IOException, ClassNotFoundException {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.object"))) {
Person person = (Person) ois.readObject();
System.out.println(person); // 輸出 taoshihan:100
}
}
}
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ":" + age;
}
}
PHP 內建 `serialize()` / `unserialize()`,輸出為字串格式,便於資料庫存儲或跨進程傳遞:
<?php
class Person {
private $name; private $age;
public function __construct($name, $age) { $this->name=$name; $this->age=$age; }
public function toString() { return $this->name.":".$this->age; }
}
$personObj = serialize(new Person("taoshihan", 100));
echo $personObj; // O:6:"Person":2:{s:12:"Personname";s:9:"taoshihan";s:11:"Personage";i:100;}
$obj = unserialize($personObj);
echo $obj->toString(); // taoshihan:100
?>