package com.javarush.test.level20.lesson07.task03;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/* Externalizable Person
Класс Person должен сериализоваться с помощью интерфейса Externalizable.
Подумайте, какие поля не нужно сериализовать.
Исправьте ошибку сериализации.
Сигнатуры методов менять нельзя.
*/
public class Solution {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("20-07-03.txt"));
Person person = new Person("Ivan", "Sidorov", 28);
person.setMother(new Person());
person.setFather(new Person());
List<Person> children1 = new ArrayList<>();
children1.add(new Person());
children1.add(new Person());
person.setChildren(children1);
System.out.println(person.firstName);
System.out.println(person.lastName);
System.out.println(person.age);
System.out.println(person.mother);
System.out.println(person.father);
System.out.println("children:");
for (int i = 0; i < person.children.size(); i++) {
System.out.println(person.children.get(i));
}
System.out.printf("%n==================%n");
person.writeExternal(oos);
// oos.writeObject(person);
oos.flush();
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("20-07-03.txt"));
Person person1 = new Person();
person1.readExternal(ois);
System.out.println(person1.firstName);
System.out.println(person1.lastName);
System.out.println(person1.age);
System.out.println(person1.mother);
System.out.println(person1.father);
System.out.println("children:");
for (int i = 0; i < person1.children.size(); i++) {
System.out.println(person1.children.get(i));
}
System.out.printf("============%n");
System.out.println(person.equals(person1));
}
public static class Person implements Externalizable {
// private static final long serialVersionUID = 1931198202215896041L;
private String firstName;
private String lastName;
private int age;
private Person mother;
private Person father;
private List<Person> children;
public Person() {
super();
}
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public void setMother(Person mother) {
this.mother = mother;
}
public void setFather(Person father) {
this.father = father;
}
public void setChildren(List<Person> children) {
this.children = children;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject(firstName);
out.writeObject(lastName);
out.writeInt(age);
out.writeObject(mother);
out.writeObject(father);
out.writeObject(children);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
firstName = (String) in.readObject();
lastName = (String) in.readObject();
age = in.readInt();
mother = (Person)in.readObject();
father = (Person)in.readObject();
children = (List<Person>)in.readObject();
}
}
}
Leave A Comment