Sērijveidojot objektu programmā Java, jūs pārvēršat datus baitu straumēs, kuras vēlāk tiek pārvērstas sākotnējo datu kopijā. Ja tas izklausās mulsinoši, padomājiet par serializāciju šādos terminos. Jūs strādājat pie dokumenta un pēc tam saglabājiet to cietajā diskā. Runājot, jūs sērijojat datus, lai vēlāk varētu izgūt šo kopiju. Serializācija padara datu pārsūtīšanu tīklos daudz vieglāku un efektīvāku.
Pirms objekta sērijveidošanas ir svarīgi saprast Java pamatus. Ja esat izmantojis tādas programmēšanas valodas kā Pascal un vecākas C versijas, jūs zināt, ka bez objektu sērijveidošanas programmētājam ir jāizveido atsevišķs I/O teksta fails datu glabāšanai un ielādēšanai. Objektu sērijveidošana Java sistēmā apiet šī teksta faila izveidi, lai saglabātu datus, ietaupot laiku un programmēšanas izmaksas. Šajā rakstā ir norādītas darbības, lai sērijveidotu objektu Java. Šajā rakstā izmantotā koda paraugs tiek izmantots ar Java Developers Almanac 1.4.
Soļi
1. solis. Atveriet Java kodēšanas objektu, kuram nepieciešama sērijveidošana, vai izveidojiet to no jauna
2. solis. Atlasiet Java objektu, kuru vēlaties sērijveidot
Šajā piemērā mēs šo objektu sauksim par “MyObject”.
Solis 3. Iespējojiet objektu sērijveidošanu Java, padarot MyObject klasi, lai ieviestu saskarni java.io. Serialize
Vienkārši pievienojiet šādu koda rindiņu koda sākumā, aizstājot rindu "publiskās klases MyObject". Publiskās klases MyObject īsteno java.io. Serializable
4. solis. Tagad jūsu objekts ir sērijveidojams, tas nozīmē, ka to var rakstīt ar izvades straumi, piemēram:
-
Šīs koda rindiņas ilustrē, kā rakstīt failā vai diskā MyObject (vai jebkuru sērijveidojamu objektu).
pamēģini {
// Serializēt datu objektu failā
ObjectOutputStream out = jauns ObjectOutputStream (jauns FileOutputStream ("MyObject.ser"));
out.writeObject (objekts);
out.close ();
// Serializēt datu objektu baitu masīvā
ByteArrayOutputStream bos = jauns ByteArrayOutputStream ();
out = jauns ObjectOutputStream (bos);
out.writeObject (objekts);
out.close ();
// Iegūstiet sērijveida objekta baitus
baits buf = bos.toByteArray ();
} nozveja (IOException e) {
}
5. solis. To var nolasīt šādi:
-
pamēģini {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream lasītājs = jauns ObjectInputStream (durvis); MyObject x = jauns MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
6. solis. Izpildiet Java programmas sērijveida objekta kodu, lai pārliecinātos, ka tas darbojas efektīvi (pēc izvēles)
7. solis. Saglabājiet un aizveriet sērijveida objektu Java
Padomi
- Serializācijas uzlabojumi Java SE izstrādes komplektā 6 ļauj izmantot ObjectStreamClass uzmeklēt jebkuru metodi, lai apstrādātu visus sērijveidojamos klases objektus.
- Lai uzlabotu lasīšanas un rakstīšanas laiku lielos objektu kokos, izmantojiet “pārejošu” atslēgvārdu, piemēram, mainīgajiem, kuriem nav nepieciešama sērija. Tas palielinās veiktspēju, jo jūs vairs nelasāt un nerakstāt nevajadzīgus datus sērijas veidošanas procesā.
Brīdinājumi
- Java gandrīz katru gadu nāk klajā ar jaunu izstrādātāja komplekta versiju. Jaunās versijas ietver jauninājumus un izmaiņas, kā jūs varat sērijveidot objektu Java. Tāpēc ir svarīgi uzraudzīt izmaiņas jūsu izmantotajā versijā.
- Serializējot objektus, jūs nevarat šifrēt datu straumes. Tādēļ, lai aizsargātu datus, ja nepieciešams, jums jāpaļaujas uz citām lietojumprogrammām vai sekundārā tīkla transportēšanas procesiem.
- Pašlaik nav nevienas iespējas, kas ļautu rakstīt objektus brīvpiekļuves failā. Tā vietā jūs varat izmantot baitu masīva ievades plūsmas kā vietturi, no kura lasīt un rakstīt objektus. Tomēr pārliecinieties, vai viss objekts atrodas baitu masīva plūsmā, pretējā gadījumā process neizdosies.