ObjectInputStream Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream.
[Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)]
public class ObjectInputStream : Java.IO.InputStream, IDisposable, 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
- Héritage
- Attributs
- Implémente
Remarques
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream.
ObjectOutputStream et ObjectInputStream peuvent fournir une application avec un stockage persistant pour les graphiques d’objets lorsqu’ils sont utilisés avec un FileOutputStream et FileInputStream respectivement. ObjectInputStream est utilisé pour récupérer ces objets précédemment sérialisés. D’autres utilisations incluent le passage d’objets entre les hôtes à l’aide d’un flux de socket ou pour le marshaling et l’annulation des arguments et des paramètres dans un système de communication distant.
ObjectInputStream garantit que les types de tous les objets du graphique créés à partir du flux correspondent aux classes présentes dans la machine virtuelle Java. Les classes sont chargées selon les besoins à l’aide des mécanismes standard.
Seuls les objets qui prennent en charge l’interface java.io.Serializable ou java.io.Externalizable peuvent être lus à partir de flux.
La méthode readObject est utilisée pour lire un objet à partir du flux. Java doit être utilisé pour obtenir le type souhaité. Dans Java, les chaînes et les tableaux sont des objets et sont traités comme des objets pendant la sérialisation. Lors de la lecture, ils doivent être convertis en type attendu.
Les types de données primitifs peuvent être lus à partir du flux à l’aide de la méthode appropriée sur DataInput.
Le mécanisme de désérialisation par défaut pour les objets restaure le contenu de chaque champ sur la valeur et tapez-le lorsqu’il a été écrit. Les champs déclarés comme temporaires ou statiques sont ignorés par le processus de désérialisation. Les références à d’autres objets entraînent la lecture de ces objets à partir du flux si nécessaire. Les graphiques d’objets sont restaurés correctement à l’aide d’un mécanisme de partage de référence. Les nouveaux objets sont toujours alloués lors de la désérialisation, ce qui empêche le remplacement des objets existants.
La lecture d’un objet est analogue à l’exécution des constructeurs d’un nouvel objet. La mémoire est allouée pour l’objet et initialisée à zéro (NULL). Les constructeurs no-arg sont appelés pour les classes non sérialisables, puis les champs des classes sérialisables sont restaurés à partir du flux à partir de la classe sérialisable la plus proche de java.lang.object et se terminent par la classe la plus spécifique de l’objet.
Par exemple, pour lire à partir d’un flux tel qu’écrit par l’exemple dans 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();
Les classes contrôlent la façon dont elles sont sérialisées en implémentant les interfaces java.io.Serializable ou java.io.Externalizable.
L’implémentation de l’interface Serializable permet à la sérialisation d’objets d’enregistrer et de restaurer l’état entier de l’objet et permet aux classes d’évoluer entre le moment où le flux est écrit et l’heure de lecture. Il traverse automatiquement les références entre les objets, l’enregistrement et la restauration de graphiques entiers.
Les classes sérialisables qui nécessitent une gestion spéciale pendant le processus de sérialisation et de désérialisation doivent implémenter les méthodes suivantes :
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException;
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;
La méthode readObject est chargée de lire et de restaurer l’état de l’objet pour sa classe particulière à l’aide de données écrites dans le flux par la méthode writeObject correspondante. La méthode n’a pas besoin de s’inquiéter de l’état appartenant à ses superclasses ou sous-classes. L’état est restauré en lisant les données de ObjectInputStream pour les champs individuels et en effectuant des affectations aux champs appropriés de l’objet. La lecture des types de données primitifs est prise en charge par DataInput.
Toute tentative de lecture des données d’objet qui dépasse les limites des données personnalisées écrites par la méthode writeObject correspondante entraîne la levée d’une exception OptionalDataException avec une valeur de champ eof de true. Les lectures non-objet qui dépassent la fin des données allouées reflètent la fin des données de la même façon qu’elles indiquent la fin du flux : les lectures au niveau des octets retournent -1 en tant que lecture d’octets ou le nombre d’octets lus, et les lectures primitives lèvent des EOFExceptions. S’il n’existe aucune méthode writeObject correspondante, la fin des données sérialisées par défaut marque la fin des données allouées.
Les appels de lecture primitifs et d’objets émis à partir d’une méthode readExternal se comportent de la même manière : si le flux est déjà positionné à la fin des données écrites par la méthode writeExternal correspondante, les lectures d’objets lèvent des valeurs OptionalDataExceptions avec eof défini sur true, les lectures d’octets retournent -1 et les lectures primitives lèvent des EOFExceptions. Notez que ce comportement ne tient pas compte des flux écrits avec l’ancien ObjectStreamConstants.PROTOCOL_VERSION_1 protocole, dans lesquels la fin des données écrites par les méthodes writeExternal n’est pas démarcatée et ne peut donc pas être détectée.
La méthode readObjectNoData est chargée d’initialiser l’état de l’objet pour sa classe particulière dans l’événement où le flux de sérialisation ne répertorie pas la classe donnée en tant que superclasse de l’objet désérialisé. Cela peut se produire dans les cas où la partie de réception utilise une version différente de la classe de l’instance désérialisée que la partie émettrice, et la version du destinataire étend les classes qui ne sont pas étendues par la version de l’expéditeur. Cela peut également se produire si le flux de sérialisation a été falsifié ; par conséquent, readObjectNoData est utile pour initialiser correctement les objets désérialisés malgré un flux source « hostile » ou incomplet.
La sérialisation ne lit pas ou n’affecte pas de valeurs aux champs d’un objet qui n’implémente pas l’interface java.io.Serializable. Les sous-classes d’objets qui ne sont pas sérialisables peuvent être sérialisables. Dans ce cas, la classe non sérialisable doit avoir un constructeur no-arg pour permettre à ses champs d’être initialisés. Dans ce cas, il incombe à la sous-classe d’enregistrer et de restaurer l’état de la classe non sérialisable. Il est fréquent que les champs de cette classe soient accessibles (public, package ou protégé) ou qu’il existe des méthodes get et set qui peuvent être utilisées pour restaurer l’état.
Toute exception qui se produit lors de la désérialisation d’un objet est interceptée par ObjectInputStream et abandonne le processus de lecture.
L’implémentation de l’interface externalisable permet à l’objet d’assumer un contrôle complet sur le contenu et le format du formulaire sérialisé de l’objet. Les méthodes de l’interface Externalizable, writeExternal et readExternal, sont appelées pour enregistrer et restaurer l’état des objets. En cas d’implémentation par une classe, ils peuvent écrire et lire leur propre état à l’aide de toutes les méthodes de ObjectOutput et ObjectInput. Il incombe aux objets de gérer tout contrôle de version qui se produit.
Les constantes enum sont désérialisées différemment des objets sérialisables ordinaires ou externalisables. La forme sérialisée d’une constante enum se compose uniquement de son nom ; les valeurs de champ de la constante ne sont pas transmises. Pour désérialiser une constante d’énumération, ObjectInputStream lit le nom de la constante à partir du flux ; la constante désérialisée est ensuite obtenue en appelant la méthode Enum.valueOf(Class, String) statique avec le type de base de la constante enum et le nom de constante reçu en tant qu’arguments. Comme d’autres objets sérialisables ou externalisables, les constantes d’énumération peuvent fonctionner comme les cibles des références back qui apparaissent par la suite dans le flux de sérialisation. Le processus par lequel les constantes d’énumération sont désérialisées ne peut pas être personnalisé : les méthodes readObject, readObjectNoData et readResolve définies par les types d’énumération ne sont pas prises en compte lors de la désérialisation. De même, les déclarations de champs serialPersistentFields ou serialVersionUID sont également ignorées : tous les types d’énumérations ont un serialVersionUID fixe de 0L.
Ajouté dans JDK1.1.
Java documentation pour java.io.ObjectInputStream.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| ObjectInputStream() |
Fournissez un moyen pour les sous-classes qui réaffectent complètement ObjectInputStream de ne pas avoir à allouer des données privées uniquement utilisées par cette implémentation d’ObjectInputStream. |
| ObjectInputStream(IntPtr, JniHandleOwnership) |
Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime. |
| ObjectInputStream(Stream) |
Crée un ObjectInputStream qui lit à partir de l’InputStream spécifié. |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| JniPeerMembers |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
Méthodes
| Nom | Description |
|---|---|
| Available() |
Retourne une estimation du nombre d’octets qui peuvent être lus (ou ignorés) à partir de ce flux d’entrée sans blocage, ce qui peut être 0 ou 0 lorsque la fin du flux est détectée. (Hérité de InputStream) |
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
| Close() |
Ferme ce flux d’entrée et libère toutes les ressources système associées au flux. (Hérité de InputStream) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| DefaultReadObject() |
Lisez les champs non statiques et non temporaires de la classe actuelle à partir de ce flux. |
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| EnableResolveObject(Boolean) |
Activez le flux pour autoriser les objets lus à partir du flux à remplacer. |
| Equals(Object) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| GetHashCode() |
Retourne une valeur de code de hachage pour l’objet. (Hérité de Object) |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Mark(Int32) |
Marque la position actuelle dans ce flux d’entrée. (Hérité de InputStream) |
| MarkSupported() |
Teste si ce flux d’entrée prend en charge les méthodes et |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| Read() |
Lit un octet de données. |
| Read(Byte[], Int32, Int32) |
Lit jusqu’à |
| Read(Byte[]) |
Lit un certain nombre d’octets du flux d’entrée et les stocke dans le tableau de mémoires tampons |
| ReadAllBytes() |
Lit tous les octets restants du flux d’entrée. (Hérité de InputStream) |
| ReadAsync() |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de InputStream) |
| ReadAsync(Byte[], Int32, Int32) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de InputStream) |
| ReadAsync(Byte[]) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de InputStream) |
| ReadBoolean() |
Lit dans une valeur booléenne. |
| ReadByte() |
Lit un octet de 8 bits. |
| ReadChar() |
Lit un char 16 bits. |
| ReadClassDescriptor() |
Lit un descripteur de classe à partir du flux de sérialisation. |
| ReadDouble() |
Lit un double 64 bits. |
| ReadFields() |
Lit les champs persistants du flux et les rend disponibles par nom. |
| ReadFloat() |
Lit un float 32 bits. |
| ReadFully(Byte[], Int32, Int32) |
Lit les octets, bloquant jusqu’à ce que tous les octets soient lus. |
| ReadFully(Byte[]) |
Lit les octets, bloquant jusqu’à ce que tous les octets soient lus. |
| ReadInt() |
Lit un int 32 bits. |
| ReadLine() |
Obsolète.
Lit dans une ligne qui a été arrêtée par un \n, \r, \r\n ou EOF. |
| ReadLong() |
Lit une longueur de 64 bits. |
| ReadNBytes(Byte[], Int32, Int32) |
Lit le nombre demandé d’octets du flux d’entrée dans le tableau d’octets donné. (Hérité de InputStream) |
| ReadNBytes(Int32) |
Lit jusqu’à un nombre spécifié d’octets à partir du flux d’entrée. (Hérité de InputStream) |
| ReadObject() |
Lit un objet à partir de ObjectInputStream. |
| ReadObjectOverride() |
Cette méthode est appelée par des sous-classes approuvées d’ObjectOutputStream qui ont construit ObjectOutputStream à l’aide du constructeur no-arg protégé. |
| ReadShort() |
Lit un court terme 16 bits. |
| ReadStreamHeader() |
La méthode readStreamHeader est fournie pour permettre aux sous-classes de lire et de vérifier leurs propres en-têtes de flux. |
| ReadUnshared() |
Lit un objet « non partagé » à partir de ObjectInputStream. |
| ReadUnsignedByte() |
Lit un octet 8 bits non signé. |
| ReadUnsignedShort() |
Lit un short non signé 16 bits. |
| ReadUTF() |
Lit une chaîne au format UTF-8 modifié. |
| RegisterValidation(IObjectInputValidation, Int32) |
Inscrivez un objet à valider avant le retour du graphique. |
| Reset() |
Repositionne ce flux à la position au moment où la |
| ResolveClass(ObjectStreamClass) |
Chargez l’équivalent de classe locale de la description de la classe de flux spécifiée. |
| ResolveObject(Object) |
Cette méthode permet aux sous-classes approuvées d’ObjectInputStream de remplacer un objet par un autre lors de la désérialisation. |
| ResolveProxyClass(String[]) |
Retourne une classe proxy qui implémente les interfaces nommées dans un descripteur de classe proxy ; Les sous-classes peuvent implémenter cette méthode pour lire des données personnalisées à partir du flux, ainsi que les descripteurs pour les classes proxy dynamiques, ce qui leur permet d’utiliser un autre mécanisme de chargement pour les interfaces et la classe proxy. |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| Skip(Int64) |
Ignore et ignore les octets |
| SkipAsync(Int64) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de InputStream) |
| SkipBytes(Int32) |
Ignore les octets. |
| SkipNBytes(Int64) |
Ignore et ignore exactement |
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| TransferTo(Stream) |
Lit tous les octets de ce flux d’entrée et écrit les octets dans le flux de sortie donné dans l’ordre dans lequel ils sont lus. (Hérité de InputStream) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.Finalized() |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. (Hérité de JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadAsync(IObjectInput, Byte[], Int32, Int32) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadAsync(IObjectInput, Byte[]) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadAsync(IObjectInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadBooleanAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadByteAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadCharAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadDoubleAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadFloatAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadFullyAsync(IDataInput, Byte[], Int32, Int32) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadFullyAsync(IDataInput, Byte[]) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadIntAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadLineAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadLongAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadObjectAsync(IObjectInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadShortAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadUnsignedByteAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadUnsignedShortAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| ReadUTFAsync(IDataInput) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| SkipAsync(IObjectInput, Int64) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| SkipBytesAsync(IDataInput, Int32) |
Un ObjectInputStream désérialise les données primitives et les objets précédemment écrits à l’aide d’un ObjectOutputStream. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |