Java中的类序列化和反序列化是指将对象转换为二进制数据流并进行传输和存储,以及将二进制数据流转换为对象的过程。
public class MyClass implements java.io.Serializable { public String name; public int age; public double salary; }
为了让一个类实现序列化接口,只需在类声明时加上"implements java.io.Serializable"即可。
MyClass obj = new MyClass(); obj.name = "张三"; obj.age = 30; obj.salary = 5000.00; try { FileOutputStream fileOut = new FileOutputStream("employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(obj); out.close(); fileOut.close(); System.out.printf("Serialized data is saved in employee.ser"); } catch(IOException i) { i.printStackTrace(); }
在上述代码中,我们将一个对象序列化并保存到文件中。通过使用FileOutputStream和ObjectOutputStream类,我们可以轻松地将对象转换为字节流并将其写入文件。
MyClass obj = null; try { FileInputStream fileIn = new FileInputStream("employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); obj = (MyClass) in.readObject(); in.close(); fileIn.close(); } catch(IOException i) { i.printStackTrace(); return; } catch(ClassNotFoundException c) { System.out.println("Employee class not found"); c.printStackTrace(); return; } System.out.println("Deserialized Employee..."); System.out.println("Name: " + obj.name); System.out.println("Age: " + obj.age); System.out.println("Salary: " + obj.salary);
在上述代码中,我们将一个序列化的对象从文件中读取并反序列化为对象。通过使用FileInputStream和ObjectInputStream类,我们可以轻松地从文件中读取字节并将其转换为对象。
Java的类序列化和反序列化可以在分布式系统、网络传输、对象持久化等场景下发挥作用,使得数据的传输和存储更加方便和高效。