Всем добра, подскажите, пожалуйста. Задача не принимается, не устраивает сериализация Персанов. Решил опробовать в мэйне. У меня два вопроса, правильно ли я выполнил сериализацию/десериализацию, и если да, то куда копать, почему некорректно отрабатывает сериализация Person-ов. Всем, кто не пройдет мимо, очень признателен)
package com.javarush.task.task20.task2013;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Externalizable Person
*/
public class Solution {
public static class Person implements Externalizable {
private String firstName;
private String lastName;
private int age;
private Person mother;
private Person father;
private List<Person> children;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public Person() {
}
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(mother);
out.writeObject(father);
out.writeChars(firstName);
out.writeChars(lastName);
out.writeInt(age);
out.writeObject(children);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
mother = (Person)in.readObject();
father = (Person)in.readObject();
firstName = (String)in.readObject();
lastName = (String)in.readObject();
age = in.readInt();
children = (List<Person>)in.readObject();
}
}
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
Person man = new Person("Ivan", "Ivanov", 32);
man.setFather(new Person("IvansFather", "Ivanov", 50));
man.setMother(new Person("IvanMother", "Ivanova", 47));
List<Person> deti = new ArrayList();
deti.add(new Person("c1","Iva",10));
deti.add(new Person("c2", "Iva", 7));
deti.add(new Person("c3", "Iva", 5));
man.setChildren(deti);
FileOutputStream fos = new FileOutputStream("D://ddd.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(man);
oos.close();
FileInputStream fis = new FileInputStream("D://ddd.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Person man1 = new Person();
man1 = (Person)ois.readObject();
ois.close();
}
}