|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2003
Messaggi: 179
|
[JAVA] deserializzare un oggetto, ma la classe è cambiata!
Salve a tutti,
Supponiamo che io abbia una classe Codice:
class Foo { Matrice m //...metodi vari } Poi però cambio la definizione della classe in Codice:
class Foo { MatriceBoia mb //...metodi vari } Ora, siccome Matrice e MatriceBoia sono due classi di due package di matrici, io so come convertire l'una nell'altra. Il punto però è che non so come recuperare il campo m in fase di deserializzazione: c'è un modo per accedere ad un singolo campo in un oggetto deserializzato che ancora non è stato castato al suo tipo di appartenenza? Altrimenti come altro posso fare? ps: non posso ovviamente ricreare l'oggetto da zero, perchè per averlo mi ci sono voluti due giorni di elaborazione ![]() thx in advance
__________________
"The problem with any unwritten law is that you don't know where to go to erase it." Ho trattato positivamente con: quien sabe |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se hai ancora la classe Matrice, sì, se la classe Matrice non esiste più, no. No significa che puoi sempre ricostruire la classe ma devi andare a interpretare manualmente il flusso di dati serializzati (che ha un suo protocollo).
Nel primo caso, crei il metodo readObject in Foo, fai leggere all'ObjectInputStream i campi (readFields), pigli il campo "matrice", verifichi: se è di tipo Matrice -> deserializzi manualmente convertendo Matrice in MatriceB se è di tipo MatriceB -> esegui defaultReadObject.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2003
Messaggi: 179
|
Grazie per la risposta, decisiva
![]() naturalmente si, la classe Matrice ce l'ho. thx again
__________________
"The problem with any unwritten law is that you don't know where to go to erase it." Ho trattato positivamente con: quien sabe |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nel caso in cui il dato da deserializzare sia di tipo matrice, puoi usare la deserializzazione automatica di Matrice e poi ti fai un costruttore in Foo che prende come parametro Matrice e ti fai la conversione lì dentro.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:45.