الدرس 45: تسلسل الكائنات وإلغاء التسلسل
التسلسل (Serialization) هو عملية تحويل حالة الكائن إلى تسلسل من البايتات (تدفق). يمكن بعد ذلك حفظ هذا التدفق في ملف أو نقله عبر الشبكة.
إلغاء التسلسل (Deserialization) هو العملية العكسية: إعادة بناء الكائن من تدفق البايتات.
1. جعل الفئة قابلة للتسلسل
لكي يكون الكائن قابلاً للتسلسل، يجب أن تنفذ فئته الواجهة java.io.Serializable.
java import java.io.Serializable;
public class Employee implements Serializable { private String name; private int id;
// يتم تجاهل حقول transient أثناء التسلسل
private transient String password;
private static final long serialVersionUID = 1L;
}
2. التسلسل (كتابة الكائن)
نستخدم ObjectOutputStream ، الذي يجب أن يغلف تدفق بايتات (مثل FileOutputStream).
java try (ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream("employee.ser"))) { Employee emp = new Employee("John", 101); objOut.writeObject(emp); // كتابة الكائن بالكامل للتدفق } catch (IOException i) { ... }
3. إلغاء التسلسل (قراءة الكائن)
نستخدم ObjectInputStream ويجب علينا تحويل (cast) الكائن المقروء إلى نوع الفئة المحدد.
java try (ObjectInputStream objIn = new ObjectInputStream(new FileInputStream("employee.ser"))) { Employee e = (Employee) objIn.readObject(); System.out.println("Employee deserialized: " + e.getName()); } catch (IOException | ClassNotFoundException e) { ... }