Press "Enter" to skip to content

Que se passe-t-il si la classe parent n'est pas sérialisable ?

Si une superclasse n'est pas sérialisable, la sous-classe peut toujours être sérialisée : même si la superclasse n'implémente pas l'interface sérialisable, nous pouvons sérialiser l'objet de la sous-classe si la sous-classe elle-même implémente l'interface sérialisable. Mais que se passe-t-il avec les instances de superclasse lors de la sérialisation dans ce cas.

Q. Que se passe-t-il si votre classe Serializable contient un membre qui n'est pas Serializable ?

Si notre classe n'implémente pas l'interface sérialisable, ou si elle fait référence à une classe non sérialisable, la JVM lèvera NotSerializableException . Tous les champs transitoires et statiques ne sont pas sérialisés. Si nous ne le fournissons pas, la JVM en fournit un qui peut changer lorsque notre structure de classe change.

Q. Pouvons-nous sérialiser la classe enfant?

Oui. Si un parent implémente Serializable, toutes les classes enfants sont également Serializable . static class A implements Serializable { } static class B étend A { } public static void main(String[] args) { Serializable b = new B(); // <– Ceci est une déclaration légale. }

Q. Quel type de membres ne sont pas sérialisés ?

Quels types de membres ne sont pas sérialisés ? Explication : Toutes les variables statiques et transitoires ne sont pas sérialisées.

Q. La classe sérialisable peut-elle être héritée ?

Vous devez marquer explicitement chaque classe dérivée comme [Serializable] . Si, toutefois, vous voulez dire l'interface ISerializable, alors oui : les implémentations d'interface sont héritées, mais vous devez être prudent – par exemple en utilisant une méthode virtuelle afin que les classes dérivées puissent contribuer leurs données à la sérialisation.

Q. Que se passe-t-il si je n'implémente pas sérialisable ?

3 réponses. L'étudiant ne serait pas sérialisable et agirait comme une classe normale. La sérialisation est la conversion d'un objet en une série d'octets, de sorte que l'objet puisse être facilement enregistré dans un stockage persistant ou diffusé via une liaison de communication.

Q. Que faites-vous si un objet ne doit pas ou n'a pas besoin d'être sérialisé ?

N'implémentez que ce dont vous avez besoin et n'essayez pas de rendre votre classe sérialisable juste pour le plaisir. Si votre objet a une référence (transitive ou directe) à un objet non sérialisable, et que cette référence n'est pas marquée avec le mot clé transient, alors votre objet ne sera pas sérialisable.

Q. Quand sérialiser les classes parent et enfant en Java ?

Si la classe parent implémente SerializableInterface, mais que la classe enfant n'implémente pas l'interface Serializable, nous pouvons également sérialiser l'objet de la classe enfant. Parce que si la classe parent a un comportement sérialisable, la classe enfant par défaut aura également un comportement sérialisable. Père.java

Q. Qu'advient-il de la valeur parente lors de la sérialisation ?

Lors de la sérialisation, la valeur parent sera enregistrée avec la valeur par défaut, c'est-à-dire 0 puisqu'elle est héritée d'une classe parent non sérialisable. Lors de la désérialisation pour la classe parent non sérialisable ; l'initialisation de la variable d'instance, l'exécution du bloc d'instance, l'exécution du constructeur sans argument seront effectuées et les valeurs seront réaffectées à 3 au lieu de 101.

Q. Pouvez-vous sérialiser un objet d'héritage en Java ?

La réponse à cette question est n ° 1 Bon à savoir en Java La sérialisation avec héritage La classe d'objet n'implémente pas l'interface sérialisable Nous pouvons donc très bien sérialiser l'objet de la classe enfant même si la classe parent n'implémente pas l'interface sérialisable.

Q. Quand n'avez-vous pas besoin de sérialiser des données statiques en Java ?

Si notre classe contient des données membres statiques, elles ne seront pas sérialisées car static est la partie de la classe et non l'objet. Dans certains cas, vous ne souhaitez pas sérialiser les données membres d'une classe, mais également les inclure dans le code de sérialisation.