ObjectOutputStream Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream.
[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectOutput
[<Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)>]
type ObjectOutputStream = class
inherit OutputStream
interface IObjectOutput
interface IDataOutput
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Vererbung
- Attribute
- Implementiert
Hinweise
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. Die Objekte können mithilfe eines ObjectInputStream gelesen (wiederhergestellt) werden. Der dauerhafte Speicher von Objekten kann mithilfe einer Datei für den Datenstrom erreicht werden. Wenn der Datenstrom ein Netzwerksocketstrom ist, können die Objekte auf einem anderen Host oder in einem anderen Prozess wiederhergestellt werden.
Nur Objekte, die die java.io.Serializable-Schnittstelle unterstützen, können in Datenströme geschrieben werden. Die Klasse jedes serialisierbaren Objekts wird codiert, einschließlich des Klassennamens und der Signatur der Klasse, der Werte der Felder und Arrays des Objekts und des Schließens aller anderen Objekte, auf die von den anfänglichen Objekten verwiesen wird.
Die Methode writeObject wird verwendet, um ein Objekt in den Datenstrom zu schreiben. Jedes Objekt, einschließlich Zeichenfolgen und Arrays, wird mit writeObject geschrieben. Mehrere Objekte oder Grundtypen können in den Datenstrom geschrieben werden. Die Objekte müssen aus dem entsprechenden ObjectInputstream mit denselben Typen und in derselben Reihenfolge wie geschrieben gelesen werden.
Primitive Datentypen können auch mithilfe der entsprechenden Methoden aus DataOutput in den Datenstrom geschrieben werden. Zeichenfolgen können auch mit der writeUTF-Methode geschrieben werden.
Der Standard serialisierungsmechanismus für ein Objekt schreibt die Klasse des Objekts, die Klassensignatur und die Werte aller nicht vorübergehenden und nicht statischen Felder. Verweise auf andere Objekte (außer in vorübergehenden oder statischen Feldern) bewirken, dass diese Objekte ebenfalls geschrieben werden. Mehrere Verweise auf ein einzelnes Objekt werden mithilfe eines Referenzfreigabemechanismus codiert, sodass Diagramme von Objekten in derselben Form wie beim Schreiben des Originals wiederhergestellt werden können.
Beispielsweise zum Schreiben eines Objekts, das im Beispiel in ObjectInputStream gelesen werden kann: <br>
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close();
Klassen, die während des Serialisierungs- und Deserialisierungsprozesses spezielle Behandlung erfordern, müssen spezielle Methoden mit diesen genauen Signaturen implementieren: <br>
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException
private void readObjectNoData()
throws ObjectStreamException;
Die writeObject-Methode ist für das Schreiben des Zustands des Objekts für die jeweilige Klasse verantwortlich, damit die entsprechende readObject-Methode sie wiederherstellen kann. Die Methode muss sich nicht mit dem Zustand befassen, der zu den Superklassen oder Unterklassen des Objekts gehört. Der Zustand wird gespeichert, indem die einzelnen Felder mithilfe der writeObject-Methode oder mithilfe der Methoden für primitive Datentypen geschrieben werden, die von DataOutput unterstützt werden.
Die Serialisierung schreibt nicht die Felder eines Objekts aus, das die Java.io.Serializable-Schnittstelle nicht implementiert. Unterklassen von Objekten, die nicht serialisierbar sind, können serialisierbar sein. In diesem Fall muss die nicht serialisierbare Klasse über einen no-arg-Konstruktor verfügen, damit die Felder initialisiert werden können. In diesem Fall liegt es in der Verantwortung der Unterklasse, den Zustand der nicht serialisierbaren Klasse zu speichern und wiederherzustellen. Es ist häufig der Fall, dass auf die Felder dieser Klasse zugegriffen werden kann (öffentlich, paket oder geschützt) oder dass es Methoden zum Abrufen und Festlegen von Methoden gibt, die zum Wiederherstellen des Zustands verwendet werden können.
Die Serialisierung eines Objekts kann verhindert werden, indem writeObject- und readObject-Methoden implementiert werden, die die NotSerializableException auslösen. Die Ausnahme wird vom ObjectOutputStream erfasst und der Serialisierungsprozess abgebrochen.
Durch die Implementierung der Externalizable-Schnittstelle kann das Objekt die vollständige Kontrolle über den Inhalt und das Format des serialisierten Formulars des Objekts übernehmen. Die Methoden der Externalizable-Schnittstelle, writeExternal und readExternal, werden aufgerufen, um den Zustand der Objekte zu speichern und wiederherzustellen. Wenn sie von einer Klasse implementiert werden, können sie ihren eigenen Zustand mithilfe aller Methoden von ObjectOutput und ObjectInput schreiben und lesen. Es liegt in der Verantwortung der Objekte, alle vorkommenden Versionsverwaltungen zu behandeln.
Enumerationskonstanten werden anders serialisiert als gewöhnlich serialisierbare oder externisierbare Objekte. Die serialisierte Form einer Enumerationskonstante besteht ausschließlich aus ihrem Namen; Feldwerte der Konstante werden nicht übertragen. Zum Serialisieren einer Enumerationskonstante schreibt ObjectOutputStream die Zeichenfolge, die von der Namensmethode der Konstante zurückgegeben wird. Wie bei anderen serialisierbaren oder externisierbaren Objekten können Enumerationskonstanten als Ziele von Zurückverweisen funktionieren, die anschließend im Serialisierungsstream angezeigt werden. Der Prozess, mit dem Enumerationskonstanten serialisiert werden, kann nicht angepasst werden; alle klassenspezifischen writeObject- und writeReplace-Methoden, die durch Enumerationstypen definiert werden, werden während der Serialisierung ignoriert. Ebenso werden alle serialPersistentFields- oder serialVersionUID-Felddeklarationen ignoriert– alle Enumerationstypen weisen eine feste serialVersionUID von 0L auf.
Primitive Daten, mit Ausnahme serialisierbarer Felder und externisierbarer Daten, werden in Blockdatensätze in ObjectOutputStream geschrieben. Ein Blockdatensatz besteht aus einer Kopfzeile und daten. Der Blockdatenkopf besteht aus einer Markierung und der Anzahl der Bytes, die der Kopfzeile folgen sollen. Aufeinanderfolgende Primitive-Datenschreibvorgänge werden in einem Blockdatensatz zusammengeführt. Der blockierungsfaktor, der für einen Blockdatensatz verwendet wird, beträgt 1024 Byte. Jeder Blockdatensatz wird bis zu 1024 Byte gefüllt oder geschrieben, wenn der Blockdatenmodus beendet wird. Aufrufe der ObjectOutputStream-Methoden writeObject, defaultWriteObject und writeFields beenden zunächst alle vorhandenen Blockdatensätze.
Hinzugefügt in JDK1.1.
Java-Dokumentation für java.io.ObjectOutputStream
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
ObjectOutputStream() |
Stellen Sie eine Möglichkeit für Unterklassen bereit, die objectOutputStream vollständig neu implementieren, um keine privaten Daten zuzuweisen, die gerade von dieser Implementierung von ObjectOutputStream verwendet werden. |
ObjectOutputStream(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
ObjectOutputStream(Stream) |
Erstellt einen ObjectOutputStream, der in den angegebenen OutputStream schreibt. |
Eigenschaften
Class |
Gibt die Laufzeitklasse dieses Werts |
Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
JniIdentityHashCode |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
JniPeerMembers |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
PeerReference |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
AnnotateClass(Class) |
Unterklassen können diese Methode implementieren, damit Klassendaten im Datenstrom gespeichert werden können. |
AnnotateProxyClass(Class) |
Unterklassen können diese Methode implementieren, um benutzerdefinierte Daten im Datenstrom zusammen mit Deskriptoren für dynamische Proxyklassen zu speichern. |
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
Close() |
Schließt diesen Ausgabedatenstrom und gibt alle Systemressourcen frei, die diesem Datenstrom zugeordnet sind. (Geerbt von OutputStream) |
DefaultWriteObject() |
Schreiben Sie die nicht statischen und nicht vorübergehenden Felder der aktuellen Klasse in diesen Datenstrom. |
Dispose() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
Dispose(Boolean) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
Drain() |
Entwässern Sie alle gepufferten Daten in ObjectOutputStream. |
EnableReplaceObject(Boolean) |
Aktivieren Sie den Datenstrom, um Objekte im Datenstrom zu ersetzen. |
Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
Flush() |
Löscht diesen Ausgabedatenstrom und erzwingt das Schreiben von gepufferten Ausgabebytes. (Geerbt von OutputStream) |
GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
PutFields() |
Rufen Sie das Objekt ab, das zum Puffern dauerhafter Felder verwendet wird, die in den Datenstrom geschrieben werden sollen. |
ReplaceObject(Object) |
Diese Methode ermöglicht es vertrauenswürdigen Unterklassen von ObjectOutputStream, während der Serialisierung ein Objekt für ein anderes zu ersetzen. |
Reset() |
Das Zurücksetzen ignoriert den Status aller Objekte, die bereits in den Datenstrom geschrieben wurden. |
SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
ToArray<T>() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
UnregisterFromRuntime() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
UseProtocolVersion(ObjectStreamProtocol) |
Geben Sie die Streamprotokollversion an, die beim Schreiben des Datenstroms verwendet werden soll. |
Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<>< (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Write(Byte[]) |
|
Write(Byte[], Int32, Int32) |
|
Write(Int32) |
Schreibt ein Byte. |
WriteAsync(Byte[]) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von OutputStream) |
WriteAsync(Byte[], Int32, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von OutputStream) |
WriteAsync(Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von OutputStream) |
WriteBoolean(Boolean) |
Schreibt einen booleschen Wert. |
WriteByte(Int32) |
Schreibt ein 8-Bit-Byte. |
WriteBytes(String) |
Schreibt eine Zeichenfolge als Bytesequenz. |
WriteChar(Int32) |
Schreibt ein 16-Bit-Zeichen. |
WriteChars(String) |
Schreibt eine Zeichenfolge als Abfolge von Zeichen. |
WriteClassDescriptor(ObjectStreamClass) |
Schreiben Sie den angegebenen Klassendeskriptor in objectOutputStream. |
WriteDouble(Double) |
Schreibt ein 64-Bit-Doppel. |
WriteFields() |
Schreiben Sie die gepufferten Felder in den Datenstrom. |
WriteFloat(Single) |
Schreibt eine 32-Bit-Gleitkomma. |
WriteInt(Int32) |
Schreibt ein 32-Bit-Int. |
WriteLong(Int64) |
Schreibt eine 64-Bit-Länge. |
WriteObject(Object) |
Schreiben Sie das angegebene Objekt in ObjectOutputStream. |
WriteObjectOverride(Object) |
Methode, die von Unterklassen zum Überschreiben der standardmäßigen writeObject-Methode verwendet wird. |
WriteShort(Int32) |
Schreibt eine 16-Bit-Kurzform. |
WriteStreamHeader() |
Die writeStreamHeader-Methode wird bereitgestellt, sodass Unterklassen ihren eigenen Header an den Datenstrom anfügen oder voranstellen können. |
WriteUnshared(Object) |
Schreibt ein "unshared"-Objekt in ObjectOutputStream. |
WriteUTF(String) |
Primitive Daten schreiben diese Zeichenfolge im geänderten UTF-8-Format. |
Explizite Schnittstellenimplementierungen
IJavaPeerable.Disposed() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.Finalized() |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.JniManagedPeerState |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. (Geerbt von Object) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
JavaCast<TResult>(IJavaObject) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
GetJniTypeName(IJavaPeerable) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteAsync(IDataOutput, Byte[]) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteAsync(IDataOutput, Byte[], Int32, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteAsync(IDataOutput, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteBooleanAsync(IDataOutput, Boolean) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteByteAsync(IDataOutput, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteBytesAsync(IDataOutput, String) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteCharAsync(IDataOutput, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteCharsAsync(IDataOutput, String) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteDoubleAsync(IDataOutput, Double) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteFloatAsync(IDataOutput, Single) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteIntAsync(IDataOutput, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteLongAsync(IDataOutput, Int64) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteShortAsync(IDataOutput, Int32) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteUTFAsync(IDataOutput, String) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
FlushAsync(IFlushable) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
FlushAsync(IObjectOutput) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |
WriteObjectAsync(IObjectOutput, Object) |
Ein ObjectOutputStream schreibt primitive Datentypen und Diagramme von Java-Objekten in einen OutputStream. |