Mint egy Wikipédia, sorszámozás (vagy serialisation) az a folyamat, fordítás adatszerkezetek vagy tárgy állami olyan formátumba, amit tárolható (például egy fájl vagy a memória puffer) vagy továbbított (például át egy hálózati kapcsolat link), illetve rekonstruált később (esetleg más számítógépes környezetben).Ha a kapott bitsorozatot újraolvassa a sorozatosítási formátum szerint, akkor felhasználható az eredeti objektum szemantikailag azonos klónjának létrehozására.,
tehát alapvetően Sorozatkészítés egy folyamat konvertálni egy objektum egy byte, amely kifejezi, hogy egy lemez vagy adatbázis, vagy el lehet küldeni keresztül patakok. Az objektum bájtszekvenciából történő létrehozásának fordított folyamatát deserializációnak nevezzük.
serialization and Deserialization in java
hogy szerializáljuk és deserialize our object to a file we need to call ObjectOutputStream.writeObject()
and ObjectInputStream.readObject()
.,
egy osztálynak a java.io
csomagban található szerializálható interfészt kell végrehajtania az objektum sikeres sorozatosításához. Serializable egy marker interfész, amely hozzáteszi, serializable viselkedés az osztály végrehajtó azt.
Java Serializable API encapsuled under java.io
csomag az objektumok sorosításához és deszerializálásához, amelyek magukban foglalják a
java.io.serializable
java.io.Externalizable
- div id=”4fec1789c0″>
- és
ObjectOutputStream
stb.,
pontokból
1. Ha egy szülő osztály végrehajtotta Serializable interface majd child class nem kell végrehajtani, de fordítva nem igaz.
2. Csak a nem statikus adattagok kerülnek mentésre Sorosítási folyamaton keresztül.
3. A statikus adattagok és a tranziens adattagok nem kerülnek mentésre Sorosítás útján process.So, ha nem akarja menteni egy nem statikus adattag értékét, akkor átmeneti legyen.
4., Az objektum konstruktorát soha nem hívják, ha egy objektum deserialized.
5. A társított objektumoknak Sorosítható felületet kell végrehajtaniuk.
SerialVersionUID
A Serialization runtime társít egy verziószámot minden Serializable osztály úgynevezett SerialVersionUID, amelyet során használt Deserialization annak ellenőrzésére, hogy a feladó és vevő egy serialized objektum betöltött osztályok az objektum, amely kompatibilis tekintetében serialization., Ha a vevő betöltötte az objektum olyan osztályát, amely eltér az UID-től, mint a megfelelő feladó osztályé, a Deserialization InvalidClassException-t eredményez. Egy Sorosítható osztály kifejezetten deklarálhatja saját UID-jét egy mezőnév deklarálásával.
statikusnak, véglegesnek és hosszúnak kell lennie.
i.,e-ANY-ACCESS-MODIFIER static final long serialVersionUID=42L;
Ha egy sorosítható osztály nem deklarálja kifejezetten a serialVersionUID-ot, akkor a serialization runtime kiszámítja az alapértelmezett osztályt az osztály különböző szempontjai alapján, a Java Object Serialization specifikációban leírtak szerint. Erősen ajánlott azonban, hogy minden szerializálható osztály kifejezetten deklarálja a serialVersionUID értéket, mivel számítása nagyon érzékeny az osztály részleteire, amelyek a fordító implementációitól függően változhatnak, az osztály bármilyen változása vagy a különböző azonosító használata befolyásolhatja a serializált adatokat.,
azt is javasoljuk, hogy privát módosító UID mivel ez nem hasznos, mint örökölt tagja.
tranziens változók esetén: – a tranziens kulcsszóval definiált változó nem szerializálódik a szerializációs folyamat során.Ez a változó lesz inicializálva alapértelmezett érték alatt deserialization. (pl.: objektumok esetén null, int esetén 0).
statikus változók esetén: – a statikus kulcsszóval definiált változó nem sorosizálódik a szerializációs folyamat során.Ez a változó a dezerializáció során az osztályban meghatározott aktuális értékkel lesz betöltve.,
egy Sorszámozás a java
Deserialization
Kapcsolat mező null,mert az volt ráírva, mint a statikus, illetve mint már korábban tárgyalt statikus mezők nem sorszámozott.
megjegyzés: a statikus tagok soha nem sorosodnak, mert az osztályhoz kapcsolódnak, nem pedig az osztály objektumához.
- Sorozatkészítés az a folyamat, megmenteni egy objektum állapotát, hogy egy byte, amely akkor lehet tárolni egy fájl vagy átküldte a hálózat deserialization az a folyamat rekonstruálása egy tárgyat azok bájt.,
- csak a
Serializable
interfész alosztályai sorolhatók. - ha osztályunk nem hajt végre
Serializable
interfészt, vagy ha nemSerializable
osztályra hivatkozik, akkor a JVM aNotSerializableException
– t dobja. - All
transient
ésstatic
a mezők nem szerializálódnak. - a
serialVersionUID
annak ellenőrzésére szolgál, hogy a szerializált és deserializált objektumok azonos attribútumokkal rendelkeznek-e, és így kompatibilisek-e a dezerializációval., - létre kell hoznunk egy
serialVersionUID
mezőt osztályunkban, így ha megváltoztatjuk osztálystruktúránkat(mezők hozzáadása/eltávolítása), a JVM nem fog átmenniInvalidClassException
. Ha nem adjuk meg, akkor a JVM olyan, amely megváltozhat, ha osztálystruktúránk megváltozik. - felül tudjuk írni Az alapértelmezett serializációs viselkedést a Java osztályunkon belül a
writeObject
ésreadObject
metódusok implementálásával., - és hívhatjuk a
ObjectOutputStream.defaultWriteObject()
éswriteObject
ésreadObject
methods to get the default serialization and deserialization logic. - dobhatunk
NotSerializableException
kivétel awriteObject
ésreadObject
, ha nem akarjuk, hogy osztályunk szerializált vagy deserialized legyen.
Leave a Reply