Serialization dan Deserialization dalam Java
Serialization ialah proses menukar keadaan objek kepada aliran bait supaya ia boleh dihantar melalui rangkaian atau disimpan secara kekal ke cakera. Deserialisasi ialah proses memulihkan aliran bait bersiri ke dalam objek. Di Java, penyiaran dan penyahserikan dilaksanakan melalui ObjectInputStream dan ObjectOutputStream.
Mengapa kita memerlukan serialisasi?
Dalam aplikasi moden, keadaan objek selalunya perlu dipindahkan antara sistem, proses dan benang yang berbeza. Sebagai contoh, dalam sistem teragih, objek mungkin perlu dipindahkan antara pelayan yang berbeza. Contoh lain ialah apabila menyimpan objek dalam cache, objek tersebut perlu bersiri supaya ia boleh disimpan ke cakera.
Pensirian dalam Java
Java menyediakan antara muka Boleh Bersiri untuk melaksanakan pensirilan. Antara muka Serializable hanyalah antara muka penanda tanpa sebarang kaedah, ia hanya memberitahu pengkompil bahawa kelas ini boleh bersiri. Jika kelas melaksanakan antara muka Serializable, objek kelas itu boleh bersiri. Contohnya:
public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
Dalam contoh di atas, kelas Person melaksanakan antara muka Serializable, menunjukkan bahawa kelas itu boleh bersiri.
Deserialisasi dalam Java
Deserialisasi dalam Java ialah proses memulihkan aliran bait bersiri ke dalam objek. Deserialisasi boleh dilaksanakan menggunakan kelas ObjectInputStream. Contohnya:
try { FileInputStream fileIn = new FileInputStream("person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); Person person = (Person) in.readObject(); in.close(); fileIn.close(); } catch (IOException i) { i.printStackTrace(); } catch (ClassNotFoundException c) { c.printStackTrace(); }
Dalam contoh di atas, kita mula-mula mencipta objek FileInputStream dan kemudian menyerahkannya kepada pembina ObjectInputStream untuk mencipta objek ObjectInputStream. Selepas itu, kita membaca objek daripada ObjectInputStream menggunakan kaedah readObject(). Akhir sekali, kami menutup ObjectInputStream dan FileInputStream.
Perlu diingat bahawa apabila anda desiri, kelas bersiri mesti wujud. Jika kelas bersiri tidak wujud, pengecualian ClassNotFoundException akan dibuang.
Pensirilan dan penyahserikatan dalam Java adalah sangat penting, membolehkan objek dihantar antara sistem, proses dan utas yang berbeza. Pada masa yang sama, Java juga menyediakan beberapa kaedah untuk mengawal kelakuan bersiri dan penyahserialisasian objek, seperti kaedah sementara, writeObject(), dan readObject(). Oleh kerana penyirian dan penyahserikatan mempunyai kesan prestasi yang besar, penggunaannya harus dielakkan jika sesuai.
Atas ialah kandungan terperinci Serialisasi dan Deserialisasi di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!