1. Serialisasi dan deserialisasi Java
Serialisasi Java mengacu pada proses mengubah objek Java menjadi urutan byte; Deserialisasi Java mengacu pada proses memulihkan urutan byte ke dalam objek Java.
2. Mengapa serialisasi dan deserialisasi diperlukan
Kita tahu bahwa ketika dua proses berkomunikasi dari jarak jauh, mereka dapat mengirim berbagai jenis data satu sama lain, termasuk teks, gambar, audio, video, dll., Dan data ini akan dikirimkan pada jaringan dalam bentuk urutan biner. Jadi ketika dua proses Java berkomunikasi, dapatkah transmisi objek direalisasikan di antara proses? Jawabannya adalah ya. Bagaimana cara melakukannya? Ini membutuhkan serialisasi dan deserialisasi Java. Dengan kata lain, di satu sisi, pengirim perlu mengubah objek Java ini menjadi urutan byte dan kemudian mengirimkannya di jaringan; Di sisi lain, penerima perlu mengembalikan objek Java dari urutan byte.
Ketika kita memahami mengapa serialisasi dan deserialisasi Java diperlukan, kita secara alami memikirkan manfaat serialisasi Java. Manfaat pertama kali bahwa kegigihan data direalisasikan. Melalui serialisasi, data dapat disimpan secara permanen pada hard disk (biasanya disimpan dalam file). Kedua, serialisasi digunakan untuk mewujudkan komunikasi jarak jauh, yaitu, mentransmisikan urutan byte objek di jaringan.
3. Contoh:
(1) Serialize dan deserialize file:
impor java.io.*; @SuppressWarnings ("Serial") Class Person mengimplementasikan serializable {Public Person (nama string, string sex, int usia, int tinggi) {this.name = name; this.sex = seks; this.age = usia; this.height = tinggi; } public string toString () {return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.height + "|"; } Nama string publik; seks public string; Usia int publik; Tinggi publik int; } kelas publik SerialTest {public static void main (string [] args) melempar filenotfoundException, ioException, classnotfoundException {person p = orang baru ("jim", "laki -laki", 28, 194); // Mulai Serializing ObjectOutputStream OOS = ObjectOutputStream baru (FileOutputStream baru (file baru ("mytest.txt"))); oos.writeObject (p); // Deserialize ObjectInputStream OIS = ObjectInputStream baru (FileInputStream baru (file baru ("mytest.txt"))); Orang p1 = (orang) ois.readObject (); System.out.println (p1.tostring ()); }}
(2) Deserialisasi XML ke kelas:
impor java.io.*; impor com.thoughtworks.xstream.xstream; impor com.thoughtworks.xstream.io.xml.domdriver; @SuppressWarnings ("Serial") Class RoadInfo mengimplementasikan serializable {public int id; mdn panjang publik; nama string publik; LNG ganda publik; lat ganda publik; ikon string publik; } @SuppressWarnings ("Serial") Class Table_List mengimplementasikan serializable {public String toString () {StringBuffer SB = New StringBuffer (); untuk (roadInfo r: sequence) {sb.append ("|"); SB.Append (r.id); SB.Append ("|"); SB.Append (r.mdn); SB.Append ("|"); SB.Append (r.name); SB.Append ("|"); SB.Append (r.lng); SB.Append ("|"); SB.Append (R.Lat); SB.Append ("|"); SB.Append (R.icon); SB.Append ("|/n"); } return sb.toString (); } public table_list (int count) {sequence = new roadInfo [count]; untuk (int i = 0; i <count; i ++) {urutan [i] = roadInfo baru (); }} urutan public roadInfo []; } kelas publik xmltest { / ** * @param args * / public static void main (string [] args) melempar Exception {// TODO METODE AUTO-AUTOERATED Stub StringBuffer SB = New StringBuffer (); BufferedReader Reader = BufferedReader baru (filereader baru (file baru ("friend_msg.xml")))); while (true) {string s = reader.readline (); // Baca baris if (s == null) {break; } SB.Append (s); } Xstream xs = xStream baru (domdriver baru ()); table_list db = (table_list) xs.fromxml (sb.toString ()); System.out.println (db.tostring ()); }}