Condividi tramite


ObjectInputStream Classe

Definizione

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

[Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)]
public class ObjectInputStream : Java.IO.InputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectInput
[<Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)>]
type ObjectInputStream = class
    inherit InputStream
    interface IObjectInput
    interface IDataInput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Ereditarietà
ObjectInputStream
Attributi
Implementazioni

Commenti

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ObjectOutputStream e ObjectInputStream possono fornire a un'applicazione spazio di archiviazione permanente per grafici di oggetti quando usati rispettivamente con FileOutputStream e FileInputStream. ObjectInputStream viene usato per recuperare tali oggetti serializzati in precedenza. Altri usi includono il passaggio di oggetti tra host usando un flusso socket o per il marshalling e l'annullamento del marshalling di argomenti e parametri in un sistema di comunicazione remota.

ObjectInputStream garantisce che i tipi di tutti gli oggetti nel grafico creato dal flusso corrispondano alle classi presenti nella macchina virtuale Java. Le classi vengono caricate come richiesto usando i meccanismi standard.

Solo gli oggetti che supportano l'interfaccia java.io.Serializable o java.io.Externalizable possono essere letti dai flussi.

Il metodo readObject viene usato per leggere un oggetto dal flusso. Il cast sicuro di Java deve essere usato per ottenere il tipo desiderato. In Java le stringhe e le matrici sono oggetti e vengono considerati come oggetti durante la serializzazione. Quando leggono, è necessario eseguirne il cast al tipo previsto.

I tipi di dati primitivi possono essere letti dal flusso usando il metodo appropriato in DataInput.

Il meccanismo di deserializzazione predefinito per gli oggetti ripristina il contenuto di ogni campo sul valore e il tipo in cui era stato scritto. I campi dichiarati come temporanei o statici vengono ignorati dal processo di deserializzazione. I riferimenti ad altri oggetti causano la lettura di tali oggetti dal flusso in base alle esigenze. I grafici degli oggetti vengono ripristinati correttamente usando un meccanismo di condivisione dei riferimenti. I nuovi oggetti vengono sempre allocati durante la deserializzazione, impedendo la sovrascrittura degli oggetti esistenti.

La lettura di un oggetto è analoga all'esecuzione dei costruttori di un nuovo oggetto. La memoria viene allocata per l'oggetto e inizializzata su zero (NULL). I costruttori No-arg vengono richiamati per le classi non serializzabili e quindi i campi delle classi serializzabili vengono ripristinati dal flusso a partire dalla classe serializable più vicina a java.lang.object e terminando con la classe più specifica dell'oggetto.

Ad esempio, per leggere da un flusso come scritto dall'esempio in ObjectOutputStream: <br>

FileInputStream fis = new FileInputStream("t.tmp");
                 ObjectInputStream ois = new ObjectInputStream(fis);

                 int i = ois.readInt();
                 String today = (String) ois.readObject();
                 Date date = (Date) ois.readObject();

                 ois.close();

Le classi controllano la modalità di serializzazione implementando le interfacce java.io.Serializable o java.io.Externalizable.

L'implementazione dell'interfaccia Serializable consente di salvare e ripristinare l'intero stato dell'oggetto e consente alle classi di evolversi tra il momento in cui viene scritto il flusso e l'ora di lettura. Attraversa automaticamente i riferimenti tra oggetti, salvando e ripristinando interi grafici.

Le classi serializzabili che richiedono una gestione speciale durante il processo di serializzazione e deserializzazione devono implementare i metodi seguenti:

private void writeObject(java.io.ObjectOutputStream stream)
                throws IOException;
            private void readObject(java.io.ObjectInputStream stream)
                throws IOException, ClassNotFoundException;
            private void readObjectNoData()
                throws ObjectStreamException;

Il metodo readObject è responsabile della lettura e del ripristino dello stato dell'oggetto per la classe specifica utilizzando i dati scritti nel flusso dal metodo writeObject corrispondente. Il metodo non deve preoccuparsi dello stato appartenente alle relative superclassi o sottoclassi. Lo stato viene ripristinato leggendo i dati da ObjectInputStream per i singoli campi e effettuando assegnazioni ai campi appropriati dell'oggetto. La lettura dei tipi di dati primitivi è supportata da DataInput.

Qualsiasi tentativo di lettura dei dati oggetto che supera i limiti dei dati personalizzati scritti dal metodo writeObject corrispondente causerà la generazione di un'eccezione OptionalDataException con un valore di campo eof true. Le letture non oggetto che superano la fine dei dati assegnati rifletteranno la fine dei dati nello stesso modo in cui indicano la fine del flusso: le letture byte per byte restituiscono -1 come byte read o numero di byte letti e le letture primitive genereranno EOFExceptions. Se non è presente alcun metodo writeObject corrispondente, la fine dei dati serializzati predefiniti contrassegna la fine dei dati assegnati.

Le chiamate primitive e di lettura degli oggetti eseguite dall'interno di un metodo readExternal si comportano nello stesso modo. Se il flusso è già posizionato alla fine dei dati scritti dal metodo writeExternal corrispondente, le letture degli oggetti genereranno l'eccezione OptionalDataExceptions con eof impostato su true, le letture bytewise restituiranno -1 e le letture primitive genereranno EOFExceptions. Si noti che questo comportamento non contiene flussi scritti con il protocollo precedente ObjectStreamConstants.PROTOCOL_VERSION_1 , in cui la fine dei dati scritti da metodi writeExternal non è delimitata e quindi non può essere rilevata.

Il metodo readObjectNoData è responsabile dell'inizializzazione dello stato dell'oggetto per la classe specifica nel caso in cui il flusso di serializzazione non elenca la classe specificata come superclasse dell'oggetto da deserializzare. Ciò può verificarsi nei casi in cui la parte ricevente utilizza una versione diversa della classe dell'istanza deserializzata rispetto all'entità di invio e la versione del ricevitore estende le classi che non vengono estese dalla versione del mittente. Ciò può verificarsi anche se il flusso di serializzazione è stato manomesso; readObjectNoData è quindi utile per inizializzare correttamente gli oggetti deserializzati nonostante un flusso di origine "ostile" o incompleto.

La serializzazione non legge o assegna valori ai campi di qualsiasi oggetto che non implementa l'interfaccia java.io.Serializable. Le sottoclassi di oggetti che non sono serializzabili possono essere serializzabili. In questo caso, la classe non serializzabile deve avere un costruttore no-arg per consentire l'inizializzazione dei relativi campi. In questo caso è responsabilità della sottoclasse salvare e ripristinare lo stato della classe non serializzabile. Spesso i campi di tale classe sono accessibili (pubblico, pacchetto o protetto) o che sono disponibili metodi get e set che possono essere usati per ripristinare lo stato.

Qualsiasi eccezione che si verifica durante la deserializzazione di un oggetto verrà intercettata da ObjectInputStream e interrompe il processo di lettura.

L'implementazione dell'interfaccia Externalizable consente all'oggetto di assumere il controllo completo sul contenuto e sul formato del modulo serializzato dell'oggetto. I metodi dell'interfaccia Externalizable, writeExternal e readExternal, vengono chiamati per salvare e ripristinare lo stato degli oggetti. Quando implementato da una classe, è possibile scrivere e leggere il proprio stato usando tutti i metodi di ObjectOutput e ObjectInput. È responsabilità degli oggetti gestire qualsiasi controllo delle versioni che si verifica.

Le costanti Enum vengono deserializzate in modo diverso rispetto agli oggetti serializzabili o esterni normali. La forma serializzata di una costante di enumerazione è costituita esclusivamente dal nome; i valori di campo della costante non vengono trasmessi. Per deserializzare una costante enumerazione, ObjectInputStream legge il nome della costante dal flusso; La costante deserializzata viene quindi ottenuta chiamando il metodo Enum.valueOf(Class, String) statico con il tipo di base della costante enum e il nome costante ricevuto come argomenti. Analogamente ad altri oggetti serializzabili o esterni, le costanti enumerabili possono funzionare come destinazioni dei riferimenti indietro che vengono visualizzate successivamente nel flusso di serializzazione. Il processo in base al quale le costanti enumerazioni vengono deserializzate non può essere personalizzato: i metodi readObject, readObjectNoData e readResolve specifici della classe definiti dai tipi enum vengono ignorati durante la deserializzazione. Analogamente, tutti i tipi di enumerazione serialPersistentFields o serialVersionUID vengono ignorati. Tutti i tipi di enumerazione hanno una serialVersionUID fissa di 0L.

Aggiunta in JDK1.1.

Documentazione java per java.io.ObjectInputStream.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Costruttori

ObjectInputStream()

Fornire un modo per le sottoclassi che reimplementano completamente ObjectInputStream per non dover allocare dati privati appena usati da questa implementazione di ObjectInputStream.

ObjectInputStream(IntPtr, JniHandleOwnership)

Costruttore utilizzato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

ObjectInputStream(Stream)

Crea un oggetto ObjectInputStream che legge dall'oggetto InputStream specificato.

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
JniPeerMembers

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

PeerReference

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Metodi

Available()

Restituisce una stima del numero di byte che possono essere letti (o ignorati) da questo flusso di input senza bloccare, che può essere 0 o 0 quando viene rilevata la fine del flusso.

(Ereditato da InputStream)
Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Close()

Chiude questo flusso di input e rilascia tutte le risorse di sistema associate al flusso.

(Ereditato da InputStream)
DefaultReadObject()

Leggere i campi non statici e non temporanei della classe corrente da questo flusso.

Dispose()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
Dispose(Boolean)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
EnableResolveObject(Boolean)

Abilitare il flusso per consentire la sostituzione degli oggetti letti dal flusso.

Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Mark(Int32)

Contrassegna la posizione corrente in questo flusso di input.

(Ereditato da InputStream)
MarkSupported()

Verifica se questo flusso di input supporta i mark metodi e reset .

(Ereditato da InputStream)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio di questo oggetto.

(Ereditato da Object)
Read()

Legge un byte di dati.

Read(Byte[])

Legge un numero di byte dal flusso di input e li archivia nella matrice bdi buffer .

(Ereditato da InputStream)
Read(Byte[], Int32, Int32)

Legge fino a len byte di dati dal flusso di input in una matrice di byte.

(Ereditato da InputStream)
ReadAllBytes()

Legge tutti i byte rimanenti dal flusso di input.

(Ereditato da InputStream)
ReadAsync()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da InputStream)
ReadAsync(Byte[])

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da InputStream)
ReadAsync(Byte[], Int32, Int32)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da InputStream)
ReadBoolean()

Legge in un valore booleano.

ReadByte()

Legge un byte a 8 bit.

ReadChar()

Legge un carattere a 16 bit.

ReadClassDescriptor()

Leggere un descrittore di classe dal flusso di serializzazione.

ReadDouble()

Legge un valore double a 64 bit.

ReadFields()

Legge i campi persistenti dal flusso e li rende disponibili in base al nome.

ReadFloat()

Legge un float a 32 bit.

ReadFully(Byte[])

Legge i byte, bloccando fino a quando non vengono letti tutti i byte.

ReadFully(Byte[], Int32, Int32)

Legge i byte, bloccando fino a quando non vengono letti tutti i byte.

ReadInt()

Legge un valore int a 32 bit.

ReadLine()
Obsoleti.

Legge in una riga terminata da un \n, \r, \r\n o EOF.

ReadLong()

Legge una lunghezza a 64 bit.

ReadNBytes(Byte[], Int32, Int32)

Legge il numero di byte richiesto dal flusso di input nella matrice di byte specificata.

(Ereditato da InputStream)
ReadNBytes(Int32)

Legge fino a un numero specificato di byte dal flusso di input.

(Ereditato da InputStream)
ReadObject()

Legge un oggetto da ObjectInputStream.

ReadObjectOverride()

Questo metodo viene chiamato da sottoclassi attendibili di ObjectOutputStream che ha costruito ObjectOutputStream usando il costruttore no-arg protetto.

ReadShort()

Legge un corto a 16 bit.

ReadStreamHeader()

Il metodo readStreamHeader viene fornito per consentire alle sottoclassi di leggere e verificare le proprie intestazioni di flusso.

ReadUnshared()

Legge un oggetto "non condiviso" da ObjectInputStream.

ReadUnsignedByte()

Legge un byte a 8 bit senza segno.

ReadUnsignedShort()

Legge un segno corto a 16 bit.

ReadUTF()

Legge un valore String in formato UTF-8 modificato.

RegisterValidation(IObjectInputValidation, Int32)

Registrare un oggetto da convalidare prima che venga restituito il grafico.

Reset()

Riposiziona questo flusso nella posizione al momento dell'ultima chiamata al mark metodo in questo flusso di input.

(Ereditato da InputStream)
ResolveClass(ObjectStreamClass)

Caricare l'equivalente della classe locale della descrizione della classe di flusso specificata.

ResolveObject(Object)

Questo metodo consentirà alle sottoclassi attendibili di ObjectInputStream di sostituire un oggetto per un altro durante la deserializzazione.

ResolveProxyClass(String[])

Restituisce una classe proxy che implementa le interfacce denominate in un descrittore di classe proxy; Le sottoclassi possono implementare questo metodo per leggere i dati personalizzati dal flusso insieme ai descrittori per le classi proxy dinamiche, consentendo loro di usare un meccanismo di caricamento alternativo per le interfacce e la classe proxy.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
Skip(Int64)

Ignora e rimuove n i byte di dati da questo flusso di input.

(Ereditato da InputStream)
SkipAsync(Int64)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da InputStream)
SkipBytes(Int32)

Ignora i byte.

SkipNBytes(Int64)

Ignora ed elimina esattamente n byte di dati da questo flusso di input.

(Ereditato da InputStream)
ToArray<T>()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
TransferTo(Stream)

Legge tutti i byte da questo flusso di input e scrive i byte nel flusso di output specificato nell'ordine in cui vengono letti.

(Ereditato da InputStream)
UnregisterFromRuntime()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.Finalized()

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

GetJniTypeName(IJavaPeerable)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadBooleanAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadByteAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadCharAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadDoubleAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadFloatAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadFullyAsync(IDataInput, Byte[])

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadFullyAsync(IDataInput, Byte[], Int32, Int32)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadIntAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadLineAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadLongAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadShortAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadUnsignedByteAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadUnsignedShortAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadUTFAsync(IDataInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

SkipBytesAsync(IDataInput, Int32)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadAsync(IObjectInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadAsync(IObjectInput, Byte[])

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadAsync(IObjectInput, Byte[], Int32, Int32)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

ReadObjectAsync(IObjectInput)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

SkipAsync(IObjectInput, Int64)

ObjectInputStream deserializza i dati primitivi e gli oggetti scritti in precedenza usando objectOutputStream.

Si applica a