|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
[Java] Deserializzazione e attributi transient
Ciao, io devo deserializzare un oggetto contenente un attributo transient. Il mio problema è che tali attributi non vengono deserializzati (Non essendo stati serializzati). Io però vorrei che questi elementi fossero re-inizializzati subito dopo la deserializzazione.
E' possibile fare ciò in modo 'automatico' o devo scrivere io un metodo da invocare una volta deserializzato l'oggetto? Nel secondo caso non ci sono problemi se non che non mi piace molto l'idea dal punto di vista stilistico.
__________________
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quindi se anche mettessi il campo così, es.: private transient int pippo = 10; quando l'oggetto viene deserializzato, al campo pippo non viene assegnato 10, ma rimane al suo valore di "default" (0 per i valori numerici, false per boolean, ecc...) Se vuoi fare in modo che durante la deserializzazione venga assegnato "qualcosa" di particolare ai campi transient, nella tua classe devi mettere il metodo: private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException (nota, è bene che sia 'private', non è un mio errore di scrittura). Ti basta mettere: Codice:
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
stream.defaultReadObject();
tua_var_transient = ......;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Grazie, è proprio quello che mi serve ed è anche una soluzione abbastanza elegante.
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:53.




















