package com.javarush.task.task20.task2013;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.List;
/*
Externalizable Person
Класс Person должен сериализовываться с помощью интерфейса Externalizable.
Исправь ошибку сериализации.
Сигнатуры методов менять нельзя.
*/
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 {
firstName = in.readLine();
lastName = in.readLine();
father = (Person)in.readObject();
mother = (Person)in.readObject();
age = in.readInt();
children = (List)in.readObject();
}
}
public static void main(String[] args) {
}
}
Umar
41 уровень
Объясните почему не проходит.
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Горох Антон
28 декабря 2019, 19:53
Убедись в том, что порядок ввода и вывода данных одинаковый, а также что в методе readExternal и writeExternal ты используешь только .readObject() и .writeObject().
+3
Артем Divertitto Senior Android-разработчи в United Tech Master
23 октября 2018, 11:09решение
Используй только writeObject и readObject
+6
Илья
11 июля 2020, 18:23
А почему так?
+3
Begemoth Software Architect в Сиблион
3 декабря 2020, 16:53
не обязательно. с readInt() нормально валидируется, главное это, как выше сказано, порядок
0