Какую принципиальную ошибку конкретно в этой задаче я допустил, не обозначив словом transient поля fullName и greeting? Ведь с ним после десериализации эти поля будут null, а никаких методов занесения значения этих полей в классе нет, только конструктор, который не будет вызван при восстановлении объекта.
package com.javarush.task.task20.task2020;
import java.io.*;
import java.util.logging.Logger;
/*
Сериализация человека
*/
public class Solution {
public static class Person implements Serializable {
private static final long serialVersionUID = 1L;
String firstName;
String lastName;
String fullName;
final String greeting;
String country;
Sex sex;
transient PrintStream outputStream;
transient Logger logger;
Person(String firstName, String lastName, String country, Sex sex) {
this.firstName = firstName;
this.lastName = lastName;
this.fullName = String.format("%s, %s", lastName, firstName);
this.greeting = "Hello, ";
this.country = country;
this.sex = sex;
this.outputStream = System.out;
this.logger = Logger.getLogger(String.valueOf(Person.class));
}
}
enum Sex {
MALE,
FEMALE
}
public static void main(String[] args) {
}
}