Rumah >Java >javaTutorial >Bagaimana untuk menggunakan pensirilan dan penyahserikatan Java
Pensirilan Java mengubah objek Java Object
menjadi jujukan bait binari byte[]
Penyahsiran Java ialah untuk menukar jujukan bait perduaan byte[]
menjadi objek Java Java Object
strim output bait Objek, menulis strim output objek ke fail (digunakan bersama dengan FileOutputStream)
Instance:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("1.txt")); 或 FileOutputStream fout = new FileOutputStream("1.txt"); ObjectOutputStream out = new ObjectOutputStream(fout);
Selain itu, ObjectOutputStream juga menyediakan kaedah writeObject()
untuk mensiri objek dan menghantarnya ke aliran output.
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("1.txt")); out.writeObject(new Test("Sentiment",10)); //对Test类中的构造方法进行传参
Objek aliran input Byte, menyahsiri urutan bait binari dalam fail (digabungkan dengan FileInputStream)
Instance:
rreee ObjectInputStream juga menyediakan kaedah untuk mengeluarkan objek seterusnya daripada strim dan menyahsiri objek tersebut. Nilai pulangannya ialah Objek, oleh itu, ia perlu ditukar kepada jenis data yang sesuai. readObject()
ObjectInputStream in = new ObjectInputStream(new FileInputStream("1.txt")); 或 FileInputStream fin = new FileInputStream("1.txt"); ObjectInputStream oin = new ObjectInputStream(fin);Contoh pemahamanTest.java (Jika kelas ingin melaksanakan operasi bersiri, ia mesti melaksanakan pewarisan antara muka Serializable)
ObjectInputStream In = new ObjectInputStream(new FileInputStream("1.txt")); Test o = (Test)In.readObject(); System.out.println(o); //读取后输出实例理解Serializable.java
rreee
UnSerializable.javapackage Sentiment.unserialize.demo01; import java.io.Serializable; public class Test implements Serializable { private String name; private int age; public Test() { } public Test(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Test{" + "name='" + name + '\'' + ", age=" + age + '}'; } }Selepas menjalankan Serializable.java, anda akan mendapat kandungan fail bytecode binari Pada masa ini, anda akan mendapat binari perkataan selepas menjalankan UnSerializable.java Kandungan selepas penyahserikatan kod bahagian serialVersionUID
yang nilainya ialah 1serialVersionUID
package Sentiment.unserialize.demo01; import java.io.*; public class Serializable { public static void main(String[] args) throws IOException { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("1.txt")); out.writeObject(new Test("Sentiment",10)); out.close(); } }Pada. kali ini, jalankan Serializable.java untuk melaksanakan operasi bersiri Selepas operasi selesai, takrifkan nilai
sebagai 2—>public static final long serialVersionUID = 2L;, dan ralat akan berlaku dilaporkan semasa menjalankan UnSerializable.java serialVersionUID
dan name
masing-masing di hadapan pembolehubah age
dan transient
dalam Test.java static
package Sentiment.unserialize.demo01; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class UnSerializable { public static void main(String[] args) throws IOException, ClassNotFoundException { ObjectInputStream In = new ObjectInputStream(new FileInputStream("1.txt")); Test o = (Test)In.readObject(); System.out.println(o); } }sedang dilaksanakan pada masa ini Serializable.java dan UnSerializable.java, hasil keluaran: Sentimen—>null, 10—>0 tulis semula kaedah readObject() Rasmi Membenarkan pengguna mengatasi kaedah readObject() dalam kelas bersiri Kaedah yang ditindih akan bertanggungjawab untuk membina semula objek kelas semasa semasa penyahserian Pengguna hanya perlu melaksanakan kaedah defaultReadObject() dalam kaedah readObject(). boleh memastikan bahawa proses penyahserikatan dilaksanakan seperti biasa Pemahaman instanceLaksanakan panggilan kaedah defaultReadObject() dan tulis semula kaedah ini dalam kelas Ujian untuk melakukan pensirilan dan penyahserilan Anda boleh melaksanakan arahan.
package Sentiment.unserialize.demo01; import java.io.Serializable; public class Test implements Serializable { public static final long serialVersionUID = 1L; //定义serialVersionUID private String name; private int age; public Test() { } public Test(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Test{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Atas ialah kandungan terperinci Bagaimana untuk menggunakan pensirilan dan penyahserikatan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!