Mega Code Archive

 
Categories / Java Tutorial / File
 

Controlling serialization by adding your own

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class MainClass {   public static void main(String[] args) throws IOException, ClassNotFoundException {     MyBean sc = new MyBean("Test1", "Test2");     System.out.println("Before:\n" + sc);     ByteArrayOutputStream buf = new ByteArrayOutputStream();     ObjectOutputStream o = new ObjectOutputStream(buf);     o.writeObject(sc);     ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray()));     MyBean sc2 = (MyBean) in.readObject();     System.out.println("After:\n" + sc2);   } } class MyBean implements Serializable {   private String a;   private transient String b;   public MyBean(String aa, String bb) {     a = "Not Transient: " + aa;     b = "Transient: " + bb;   }   public String toString() {     return a + "\n" + b;   }   private void writeObject(ObjectOutputStream stream) throws IOException {     stream.defaultWriteObject();     stream.writeObject(b);   }   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {     stream.defaultReadObject();     b = (String) stream.readObject();   } } /* */ Before: Not Transient: Test1 Transient: Test2 After: Not Transient: Test1 Transient: Test2