Comment sérialiser une classe de base non sérialisable en sérialisation standard?

Je ne peux pas contrôler le code source de la classe de base, comment puis-je utiliser la sérialisation standard sur la sous-classe?

Dans cet exemple, le champ a n’est pas du tout sérialisé, bien que B soit sérialisable:

// a.jar

 class A { int a; } 

// b.jar

 class B extends A implements Serializable { int b; } public class HelloWorldApp { public static void main(Ssortingng[] args) throws Exception { B b = new B(); ba = 10; bb = 20; ByteArrayOutputStream buf = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(buf); out.writeObject(b); out.close(); byte[] bytes = buf.toByteArray(); ByteArrayInputStream _in = new ByteArrayInputStream(bytes); ObjectInputStream in = new ObjectInputStream(_in); B x = (B) in.readObject(); System.out.println(xa); System.out.println(xb); } } 

Sortie:

 0 20 

Tu ne peux pas!
le champ a ne sera pas sérialisé!
Contournement: implémentez votre sérialisation personnalisée. Vous devez implémenter une interface Externalizable et les méthodes writeExternal, readExternal . Dans ces méthodes, vous pouvez écrire et lire la valeur de votre champ.