java序列化和反序列化
时间: 2023-07-18 20:16:07 浏览: 88
Java序列化是指将Java对象转换为字节序列的过程,以便在网络上传输或保存到本地文件中。Java反序列化则是将字节序列转换回Java对象的过程。在Java中,可以通过实现java.io.Serializable接口来使一个类变为可序列化的,这个接口中没有任何方法,只是一个标识接口。
以下是一个简单的序列化和反序列化示例代码:
```java
import java.io.*;
public class SerializationExample {
public static void main(String[] args) {
// 创建一个Person对象
Person person = new Person("Tom", 25);
// 序列化Person对象到本地文件
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
oos.writeObject(person);
System.out.println("Person对象已经被序列化到本地文件!");
} catch (IOException e) {
e.printStackTrace();
}
// 反序列化本地文件中的字节序列到Person对象
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person deserializedPerson = (Person) ois.readObject();
System.out.println("从本地文件反序列化出来的Person对象:" + deserializedPerson);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
在上面的代码中,我们定义了一个Person类实现了Serializable接口,然后创建一个Person对象并将其序列化到本地文件中。接着,我们再从本地文件中反序列化出Person对象并输出它的属性值。输出结果如下:
```
Person对象已经被序列化到本地文件!
从本地文件反序列化出来的Person对象:Person{name='Tom', age=25}
```
需要注意的是,Java的序列化和反序列化可能存在一些安全风险,在实际应用中需要注意对象的安全性和可靠性。
阅读全文