Назад Зміст Вперед

1.3. Серіалізація та наслідування

Java Серіалізація з успадкуванням (IS-A відносин)

Якщо клас є серіалізованим, то всі його підкласи будуть також серіалізованими. Давайте подивимося на приклад, наведений нижче:
  1. import java.io.Serializable;  
  2. class Person implements Serializable{  
  3.  int id;  
  4.  String name;  
  5.  Person(int id, String name) {  
  6.   this.id = id;  
  7.   this.name = name;  
  8.  }  
  9. }  
  1. class Student extends Person{  
  2.  String course;  
  3.  int fee;  
  4.  public Student(int id, String name, String course, int fee) {  
  5.   super(id,name);  
  6.   this.course=course;  
  7.   this.fee=fee;  
  8.  }  
  9. }  
Тепер можна серіалізувати об'єкт класу Student, який розширює клас Person, який є Serializable. Parent властивості класу успадковуються підкласами, так що якщо батьківський клас серіалізований, то підклас також буде серіалізований.

Java Серіалізація з Aggregation (HAS-A Відносини)

Якщо клас має посилання іншого класу, всі посилання повинні бути серіалізовані, інакше процес серіалізації не виконуватиметься. В такому випадку під час виконання буде NotSerializableException.
  1. class Address{  
  2.  String addressLine,city,state;  
  3.  public Address(String addressLine, String city, String state) {  
  4.   this.addressLine=addressLine;  
  5.   this.city=city;  
  6.   this.state=state;  
  7.  }  
  8. }  
  1. import java.io.Serializable;  
  2. public class Student implements Serializable{  
  3.  int id;  
  4.  String name;  
  5.  Address address;//HAS-A  
  6.  public Student(int id, String name) {  
  7.   this.id = id;  
  8.   this.name = name;  
  9.  }  
  10. }  
Так як Address не Serializable, то не можна серіалізувати екземпляр класу Student.
!!!Примітка: Всі об'єкти всередині об'єкта повинні бути Serializable.

Java Серіалізація зі статичним елементом даних

Якщо є який-небудь static член даних в класі, він не буде серіалізований, тому що static є частиною класу, і не є об'єктом.
  1. class Employee implements Serializable{  
  2.  int id;  
  3.  String name;  
  4.  static String company="SSS IT Pvt Ltd";//не буде серіалізовано  
  5.  public Student(int id, String name) {  
  6.   this.id = id;  
  7.   this.name = name;  
  8.  }  
  9. }  

Java серіалізація масиву або колекції

Правило: У разі масиву або колекції, всі об'єкти масиву або колекції повинні бути серіалізовані. Якщо який-небудь об'єкт не serialiizable, серіалізація буде провалена.
.