Java序列化(Serialization)是指将Java对象转化为字节序列的过程,即把对象存储在磁盘或者通过网络传输到其他计算机上。而Java反序列化(Deserialization)就是将字节序列转化为对象的过程,即把从磁盘中读取的字节或者从网络中接收到的字节重建成Java对象。
//示例代码1:对象序列化 public class User implements Serializable{ private int id; private String name; private int age; //getters and setters... } public class Test{ public static void main(String[] args) throws IOException { User user = new User(); user.setId(100); user.setName("Tom"); user.setAge(20); FileOutputStream outputStream = new FileOutputStream("d:/user.ser"); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); objectOutputStream.writeObject(user); objectOutputStream.close(); } }
在示例代码1中,我们定义了一个User类,并实现了Serializable接口,这样它的实例才能序列化为字节序列。接下来在主函数中,我们创建了一个User对象,并将其序列化到磁盘上。代码中用到的ObjectOutputStream类是Java提供的帮助我们将对象序列化为字节流的类。
//示例代码2:对象反序列化 public class Test{ public static void main(String[] args) throws IOException, ClassNotFoundException { FileInputStream inputStream = new FileInputStream("d:/user.ser"); ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); User user = (User) objectInputStream.readObject(); objectInputStream.close(); System.out.println(user.getId()); System.out.println(user.getName()); System.out.println(user.getAge()); } }
在示例代码2中,我们从磁盘上读取了之前序列化的User对象。代码中用到的ObjectInputStream类则是Java提供的帮助我们从字节流反序列化为对象的类。反序列化成功后,我们打印出了User对象中的属性值。
总的来说,对象的序列化和反序列化能够帮助我们将Java对象转化成字节流,方便传输和存储。不过需要注意的是,被序列化的对象必须要实现Serializable接口,否则会抛出NotSerializableException异常。