Por qué no se invoca / llama al constructor predeterminado durante la deserialización

¿Por qué no se invoca / llama al constructor predeterminado durante el mecanismo de deserialización?

Seguí la discusión y los comentarios, pero no encontré una respuesta satisfactoria.

Entiendo durante el proceso de deserialización

Crea la instancia de la clase Object al invocar su constructor predeterminado y, con la ayuda de la instancia creada, crea la instancia de la clase Parent and Child utilizando el método newConstructorForSerialization () de la clase ReflectionFactory que crea internamente la instancia sin invocar al constructor de la clase.

¿Cuál es la razón de implementar de esta manera?

 public class EmployeeAddress/* implements Serializable */{

/**
 * 
 */
/*private static final long serialVersionUID = 4455988544392627515L;*/
protected String address;

public EmployeeAddress() {
    System.out.println(this.address);
    System.out.println("EmployeeAddress constructor has invoked with no-args");
}

public EmployeeAddress(String address) {
    this.address = address;
    System.out.println(this.address);
    System.out.println("EmployeeAddress constructor has invoked with args");
}

// setter / getter
}

public class Employee extends EmployeeAddress implements Serializable{
/**
 * 
 */
/*public static final long serialVersionUID = 151736201136818635L;*/
private static final long serialVersionUID = 2L;

private String name;
private int age;
private String designation;
private double salary;
private PermanentEmployee pEmpoyee;

private transient long empId;

/*public Employee(String address) {super(address);}*/

public Employee(String name, int age, PermanentEmployee pEmpoyee, String designation, String address, long empId) {
    super(address);
    this.name = name;
    this.age = age;
    this.pEmpoyee = pEmpoyee;
    this.designation = designation;
    this.salary = 2000.00 + pEmpoyee.getBonus();
    this.empId = empId;
}

// setter / getter
}


public class PermanentEmployee implements Serializable{
/**
 * 
 */
private static final long serialVersionUID = -6153718980149785271L;

private double bonus;

public PermanentEmployee() {}

public PermanentEmployee(double bonus) {
    this.bonus = bonus;
}

// setter / getter
}


public class SerializationDemo {
public static void main(String[] args) {

    PermanentEmployee pEmpoyee = new PermanentEmployee(1000.00);

    com.serialization.first.Employee emp = new com.serialization.first.Employee("XYY", 30, pEmpoyee, "Leader", "Nagpur", 2001);
    WriterAndReader.write(emp, "emp.ser");

    System.out.println("Serailization processed..for com.serialization.first.Employee ");


    com.serialization.first.Employee emp1  = (com.serialization.first.Employee) WriterAndReader.read("emp.ser");

    System.out.println("Name: "+ emp1.getName() 
    + ", Age: "+ emp1.getAge() 
    + ", Designation: "+ emp1.getDesignation()
    + ", Salary: " + emp1.getSalary()
    + ", Address: " + emp1.getAddress()
    + ", EmpId: " + emp1.getEmpId());

    System.out.println("Deserailization processed.. for com.serialization.first.Employee ");
}
}

Output:

null
EmployeeAddress constructor has invoked with no-args
Name: XYY, Age: 30, Designation: Leader, Salary: 3000.0, Address: null, EmpId: 0
Deserailization processed.. for com.serialization.first.Employee
Respuesta 1

Hola, me preguntaba si podrías ayudarme. Tengo un formulario o marco de inicio de sesión en mi aplicación. Tiene campos de texto de nombre de usuario y contraseña y mi aplicación está conectada para acceder a la base de datos. Quiero ...

Estoy creando un juego básico de 'Pong'. He terminado el juego, aparte de algunos problemas técnicos que necesito eliminar. El juego funciona perfectamente en netbeans, pero si creo un archivo jar, aparecerán errores y ...

ACTUALIZACIÓN: Resolví este problema exactamente de la misma manera que lo sugirieron mis amigos. Pero me perdí el hecho de que tengo que seguir el protocolo de mysql para obtener el resultado. En mysql siempre hay un ...

Estoy trabajando en un proyecto corto para buscar una cadena para una subcadena especificada usando recursión. He intentado usar varias cadenas y subcadenas, así como hacer que mi código sea lo más simple posible, pero ...