2009-03-03 14 views
19

Eventuali duplicati:
What is object serialization?Che cos'è la serializzazione in Java?

Ho fatto una piccola applicazione Lettore RSS utilizzando Swing and Eclipse continua a dirmi "La classe MochaRSSView serializzabile non dichiara un campo statico serialVersionUID finale digitare lungo "

Che cos'è la serializzazione e quali vantaggi avrebbe?

+0

Per la descrizione dettagliata, fare riferimento a possibili duplicati. –

risposta

41

Serializable è un'interfaccia marker che indica alla JVM che può scrivere lo stato dell'oggetto su un flusso (in pratica, legge tutti i membri e scrive il loro stato su un flusso o su disco o qualcosa del genere). Il meccanismo predefinito è un formato binario. Puoi anche usarlo per clonare le cose, o mantenere lo stato tra invocazioni, inviare oggetti attraverso la rete, ecc.

Puoi lasciare che eclipse ne generi uno per te (in pratica solo un ID casuale ma unico lungo). Ciò significa che puoi controllare quando pensi che una classe sia compatibile con una versione serializzata, oppure no.

(Nota: tutte le variabili dei membri non transitori devono essere di una classe serializzabile, o si otterrà un errore - poiché la JVM ricercherà attraverso la struttura scrivendo lo stato di ogni oggetto fino al livello di scrittura delle primitive a ObjectOutputStream).

6

La serializzazione sta scrivendo l'oggetto in una forma che è leggibile e consente di ricreare l'oggetto in un altro momento. Quindi, se avessi creato un widget sul computer A sotto una JVM, serializzato e salvato e inviato al computer B con un altro, l'altro JVm sarebbe stato in grado di deserializzarlo e ricrearlo con gli stessi valori e struttura

4

Serialization è il processo di conversione di un oggetto in un formato memorizzabile su disco, per ricaricarlo in un secondo momento. Controlla il link per maggiori informazioni!

2

serializzazione è un modo per prendere un oggetto (un'istanza della classe) e configurarlo per il trasporto - attraverso una rete, su disco, ecc

6

Java La serializzazione è un modo per mantenere strutture di oggetti.

È consigliabile che la classe serializzabile dichiari serialVersionUID come una costante in fase di compilazione private static final long. Questo è usato per verificare che i dati dell'oggetto e il codice classe siano dichiarati compatibili.

Quindi perché Eclipse ti sta parlando di questo? Probabilmente, la classe che stai estendendo (o potenzialmente l'interfaccia che stai implementando) implementa java.io.Serializable. Ciò significa che tutti i sottotipi, incluso il tuo, sono serializzabili. Quasi certamente non ti interessa. Dovresti essere in grado di cancellare gli avvisi applicando @SuppressWarnings("serial") sulla classe o sul pacchetto (in package-info.java).Se si vuole evitare che la forza istanze della vostra classe di essere serializzato, quindi aggiungere (a memoria):

private static final java.io.ObjectStreamField[] serialPersistentFields = { 
    null 
}; 
private void writeObject(
    java.io.ObjectOutputStream ou 
) throws java.io.IOException { 
    throw new java.io.NotSerializableException(); 
} 
private void readObject(
    java.io.ObjectInputStream in 
) throws java.io.IOException, java.lang.ClassNotFoundException { 
    throw new java.io.NotSerializableException(); 
} 
private void readObjectNoData(
) throws java.io.ObjectStreamException { 
    throw new java.io.NotSerializableException(); 
} 

Non è probabilmente il miglior pensiero fuori sistema al mondo (anche se è molto meglio di molte persone danno credito per).

28

Serializzazione Java ----- Hai mai visto cosa c'è dentro un oggetto serializzato? Ti spiegherò cos'è la serializzazione java, quindi ti forniremo un campione per la serializzazione. Infine, cosa più importante, esploriamo cosa c'è dentro un oggetto serializzato e cosa significa. Questo è internals della serializzazione java e come funziona. Se vuoi avere la tua implementazione della serializzazione java, questo articolo ti fornirà una buona piattaforma da lanciare.

Che cos'è la serializzazione Java? Lo scopo principale della serializzazione java è scrivere un oggetto in un flusso, in modo che possa essere trasportato attraverso una rete e che l'oggetto possa essere ricostruito nuovamente. Quando sono coinvolte due parti diverse, è necessario un protocollo per ricostruire nuovamente lo stesso identico oggetto. L'API di serializzazione Java ti fornisce proprio questo. Altri modi in cui è possibile sfruttare la funzionalità di serializzazione è che è possibile utilizzarlo per eseguire una copia profonda.

Perché ho usato "scopo primario" nella definizione sopra riportata, a volte le persone usano la serializzazione java come una sostituzione per il database. Solo un segnaposto in cui è possibile mantenere un oggetto tra le sessioni. Questo non è lo scopo principale della serializzazione java. A volte, quando intervisto i candidati per Java, li sento dire che la serializzazione java viene utilizzata per archiviare (per preservare lo stato) un oggetto e recuperarlo. Lo usano sinonimo di database. Questa è una percezione sbagliata per la serializzazione.

Come si serializza? Quando si desidera serializzare un oggetto, la rispettiva classe deve implementare l'interfaccia marker serializzabile. Semplicemente informa il compilatore che questa classe java può essere serializzata. Puoi taggare le proprietà che non dovrebbero essere serializzate come transitorie. Apri un flusso e scrivi l'oggetto in esso. L'API Java si prende cura del protocollo di serializzazione e persiste l'oggetto java in un file in conformità con il protocollo. La serializzazione è il processo per riportare l'oggetto dal file alla sua forma originale.

Qui protocollo significa, comprensione tra serializzazione della persona e de-serializzazione della persona. Quale sarà il contenuto del file contenente l'oggetto serializzato?

+23

Viene copiato da questo link ??? Almeno prova a cambiare le parole. http://javapapers.com/core-java/java-serialization/ – Konza

Problemi correlati