0% ont trouvé ce document utile (0 vote)
9 vues3 pages

Java Serialization Summary

Ce document explique la sérialisation en Java à travers un exemple d'héritage, où une classe 'Student' hérite de 'Person'. Il souligne l'importance d'implémenter Serializable dans la sous-classe pour éviter des problèmes lors de la désérialisation. Des bonnes pratiques sont également présentées, comme l'utilisation de 'transient' pour les champs non sérialisables et la nécessité d'un 'serialVersionUID'.

Transféré par

Rouahmed17
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues3 pages

Java Serialization Summary

Ce document explique la sérialisation en Java à travers un exemple d'héritage, où une classe 'Student' hérite de 'Person'. Il souligne l'importance d'implémenter Serializable dans la sous-classe pour éviter des problèmes lors de la désérialisation. Des bonnes pratiques sont également présentées, comme l'utilisation de 'transient' pour les champs non sérialisables et la nécessité d'un 'serialVersionUID'.

Transféré par

Rouahmed17
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java Serialization – Exemple avec Héritage

1. Introduction
La sérialisation en Java permet de convertir un objet en un flux de bytes pour le stocker ou le
transmettre. Ce document résume un exemple avec héritage et les bonnes pratiques.

2. Classes initiales

class Person implements Serializable {


String name;
Person(String name) {
[Link] = name;
}
}

class Student extends Person {


String school;

public Student(String name, String school) {


super(name);
[Link] = school;
}

public String toString() {


return name + " " + school;
}
}

public class TestClass {


public static void main(String[] args) {
Person p = new Student("Bob Dylan", "NYU");
try (
ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream("[Link]"));
ObjectInputStream ois = new ObjectInputStream(new
FileInputStream("[Link]"));
) {
[Link](p);
[Link]();
[Link]((Student) [Link]());
} catch (Exception e) {
[Link]();
}
}
}

1
3. Problème rencontré
• Le code ne fonctionne pas correctement si Student n’implémente pas Serializable
explicitement.
• En Java, lors de la désérialisation :
• Si une superclasse est sérialisable, la sous-classe peut l’être automatiquement.
• Si une superclasse n’est pas sérialisable, un constructeur sans argument est requis.

4. Solution
Il faut faire que Student implémente Serializable :

class Student extends Person implements Serializable {


String school;

public Student(String name, String school) {


super(name);
[Link] = school;
}

public String toString() {


return name + " " + school;
}
}

5. Résultat attendu

Bob Dylan NYU

6. Bonnes pratiques et règles importantes

Cas Condition

Superclasse Serializable Sous-classe automatiquement sérialisable

Superclasse Non-Serializable Doit avoir constructeur sans argument

Champs de la sous-classe Doivent être serializable ou déclarés transient

7. Notes supplémentaires
• Les champs transient ne sont pas sérialisés.
• Les objets sérialisables doivent avoir un serialVersionUID pour assurer la compatibilité des
versions.
• La désérialisation ne passe pas par les constructeurs si la superclasse est sérialisable.
• Toujours gérer les exceptions IOException et ClassNotFoundException .

2
Ce résumé fait environ 2700 caractères et couvre toutes les notions clés de l'exemple de sérialisation
avec héritage en Java.

Vous aimerez peut-être aussi