淘先锋技术网

首页 1 2 3 4 5 6 7

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异常。