„Szerializalas jegyzet” változatai közötti eltérés
A VIK Wikiből
1. sor: | 1. sor: | ||
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. | 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 == | == Korábbi vizsgapéldák == | ||
=== OOT - 2015. június 2. === | === OOT - 2015. június 2. === |
A lap 2015. június 12., 15:49-kori változata
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; } }