andbin
06-03-2006, 17:08
Sto studiando la serializzazione e mi è praticamente tutto chiaro. C'è solo una cosa di cui vorrei avere conferma.
Prendiamo l'esempio:
class A { .... }
class B extends A implements Serializable { .... }
Il mio libro dice che durante la de-serializzazione della sottoclasse B, il costruttore della superclasse A viene eseguito, poiché non è marcata Serializable. Quello che non dice esplicitamente (probabilmente lo sottintende?) è che la classe A deve per forza avere il costruttore senza argomenti, altrimenti la classe B non può essere de-serializzata.
Io in effetti non ci pensavo e ci sono arrivato facendo delle prove. Avevo messo in una superclasse un solo costruttore con dei parametri. A run time, de-serializzando la sottoclasse, mi generava una eccezione del tipo:
java.io.InvalidClassException: sottoclasse; no valid constructor
Mi confermate? ;)
Prendiamo l'esempio:
class A { .... }
class B extends A implements Serializable { .... }
Il mio libro dice che durante la de-serializzazione della sottoclasse B, il costruttore della superclasse A viene eseguito, poiché non è marcata Serializable. Quello che non dice esplicitamente (probabilmente lo sottintende?) è che la classe A deve per forza avere il costruttore senza argomenti, altrimenti la classe B non può essere de-serializzata.
Io in effetti non ci pensavo e ci sono arrivato facendo delle prove. Avevo messo in una superclasse un solo costruttore con dei parametri. A run time, de-serializzando la sottoclasse, mi generava una eccezione del tipo:
java.io.InvalidClassException: sottoclasse; no valid constructor
Mi confermate? ;)