Java Серіалізація з успадкуванням (IS-A відносин)
Якщо клас є серіалізованим, то всі його підкласи будуть також серіалізованими. Давайте подивимося на приклад, наведений нижче:
- import java.io.Serializable;
- class Person implements Serializable{
- int id;
- String name;
- Person(int id, String name) {
- this.id = id;
- this.name = name;
- }
- }
- class Student extends Person{
- String course;
- int fee;
- public Student(int id, String name, String course, int fee) {
- super(id,name);
- this.course=course;
- this.fee=fee;
- }
- }
Тепер можна серіалізувати об'єкт класу
Student, який розширює клас
Person, який є
Serializable.
Parent властивості класу успадковуються підкласами, так що якщо батьківський клас серіалізований, то підклас також буде серіалізований.
Java Серіалізація з Aggregation (HAS-A Відносини)
Якщо клас має посилання іншого класу, всі посилання повинні бути серіалізовані, інакше процес серіалізації не виконуватиметься. В такому випадку під час виконання буде
NotSerializableException.
- class Address{
- String addressLine,city,state;
- public Address(String addressLine, String city, String state) {
- this.addressLine=addressLine;
- this.city=city;
- this.state=state;
- }
- }
- import java.io.Serializable;
- public class Student implements Serializable{
- int id;
- String name;
- Address address;
- public Student(int id, String name) {
- this.id = id;
- this.name = name;
- }
- }
Так як Address не Serializable, то не можна серіалізувати екземпляр класу Student.
!!!Примітка: Всі об'єкти всередині об'єкта повинні бути Serializable.
Java Серіалізація зі статичним елементом даних
Якщо є який-небудь static член даних в класі, він не буде серіалізований, тому що static є частиною класу, і не є об'єктом.
- class Employee implements Serializable{
- int id;
- String name;
- static String company="SSS IT Pvt Ltd";
- public Student(int id, String name) {
- this.id = id;
- this.name = name;
- }
- }
Java серіалізація масиву або колекції
Правило: У разі масиву або колекції, всі об'єкти масиву або колекції повинні бути серіалізовані. Якщо який-небудь об'єкт не serialiizable, серіалізація буде провалена.