Szerializalas jegyzet

A VIK Wikiből
A lap korábbi változatát látod, amilyen Balogh Péter Dániel (vitalap | szerkesztései) 2015. június 12., 15:49-kor történt szerkesztése után volt. (→‎Korábbi vizsgapéldák)

Jelen jegyzet, leírás, segédlet nevezzük bárhogy megpróbálja az Objektumorientált Szoftvertervezés és Szoftvertechnológia tárgyakban előszeretettel kérdezett Java szerializálás témaköréből egy áttekinthető, konyhanyelven készült leírást szolgáltatni, sok-sok példával.

Alapok, amiket jó ha tudunk

Korábbi vizsgapéldák

OOT - 2015. június 2.

  public class A implements Serializable {
     private int x = 1;
     public transient int y = 2;
     
     private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField("y", Integer.TYPE) };
     
     public A() { x = 3; y = 4; }
     
     public Object writeReplace() throws ObjectStreamException {
           A a = new A(); a.x = 5; a.y = 6; return a;
     }
  }

Megoldás, magyarázat

A Java, csodálatos módon megengedi azt, hogy egy transient-nek - tehát alapvetően nem szerializálódó - jelölt attribútumot mégis tudjunk sorosítani. Ezt a csodálatos lehetőséget úgy valósítja meg, hogy

OOT - 2015. június 9.

  public class A implements Serializable {
     
     private transient int x = 8;
     public int y = 4;
     
     public A () { x = 0; y = 4; }
     
     private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField("x", Integer.TYPE) };
     
     private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
        in.defaultReadObject();
        x = y + 4;
     }
  }