2011-12-25 10 views

risposta

6

Una spiegazione approfondita (sebbene la grammatica dell'articolo possa essere migliorata) può essere trovata su http://www.jusfortechies.com/java/core-java/externalization.php. La risposta breve, per riferimento futuro nel caso in cui la pagina collegata scompare:

Externalizable è un'interfaccia estendibile Serializable. Contrariamente a Serializable, tuttavia, gli oggetti non vengono ripristinati semplicemente leggendo il serializzato serializzato, ma viene chiamato il costruttore pubblico e solo dopo che l'oggetto è stato creato, il suo stato viene ripristinato. Questo rende il ripristino più efficiente.

Modifica: Vedere anche What is the difference between Serializable and Externalizable in Java?.

+0

Di quale costruttore pubblico parli, visto che si tratta di un'interfaccia? O ti riferisci all'articolo collegato? –

+0

Mi riferisco allo stesso costruttore della domanda, vale a dire quello della classe di implementazione. – jstarek

+0

Ah, ho letto male. Grazie! La tua risposta sarebbe più pertinente se parlassi di come chiamare i metodi di implementazione nel costruttore. Detto questo, la tua risposta è migliore della mia. :) –

1

Principalmente utilizzato per scopi di memorizzazione nella cache. Al fine di deserializzare deserialize attraverso i flussi, sarà necessario specificare come si desidera che il proprio oggetto sia deserializzato, quindi i due metodi forniti dal contratto nell'interfaccia Externalizable: writeExternal e readExternal. Notare che Externalizable estende Serializable, quindi non è necessario implementare l'interfaccia Serializable (sebbene sia un'interfaccia marcatore e non ci siano metodi da implementare effettivamente).

Per un'implementazione di esempio, dare un'occhiata a MimeType.

0

Un costruttore no-arg pubblico è necessario quando si utilizza l'interfaccia Externalizable.

perché in caso di Serializable

  1. readObject legge le informazioni richieste dal ObjectInputStream
  2. serializzazione utilizza meccanismo riflessione per ottenere i campi ei valori corrispondenti necessari.
  3. Serializza serializza tutti i membri dati (eccetto statico e transitorio).

Ma in caso di Externalizable

  1. Nessun meccanismo di riflessione utilizzato.
  2. L'utente non serializza tutti i membri di dati. Ecco perché per recuperare i valori dei membri che non sono esterni publicizzati non è richiesto alcun costruttore di argomenti.
Problemi correlati