(1)通过实现Serializable接口,实现对象的序列化与反序列化 (2)将序列化后的对象,以JSON形式或自定义的形式保存在文本文件 (3) 利用改文件实现对象的反序列化 (4)序列化过程中体验transient关键词
时间: 2024-02-05 12:05:15 浏览: 61
java对象序列化与反序列化的默认格式和json格式使用示例
5星 · 资源好评率100%
1. 实现Serializable接口
首先需要在需要序列化的类中实现Serializable接口,示例代码如下:
```
import java.io.Serializable;
public class Person implements Serializable {
private String name;
private int age;
private transient String password;
public Person(String name, int age, String password) {
this.name = name;
this.age = age;
this.password = password;
}
// getters and setters
}
```
注意,在需要序列化的类中,需要将类声明为实现Serializable接口,并且需要使用关键词transient修饰不需要序列化的属性。
2. 将序列化后的对象保存在文本文件
将序列化后的对象保存在文本文件,可以使用Java中的ObjectOutputStream和FileOutputStream类,示例代码如下:
```
import java.io.*;
public class SerializationDemo {
public static void main(String[] args) {
Person person = new Person("Tom", 20, "123456");
String filename = "person.txt";
try {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(person);
oos.close();
fos.close();
System.out.println("Serialized data is saved in " + filename);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们首先创建了一个Person对象,并将其序列化后保存在了person.txt文件中。
3. 利用文件实现对象的反序列化
要实现对象的反序列化,可以使用Java中的ObjectInputStream和FileInputStream类,示例代码如下:
```
import java.io.*;
public class DeserializationDemo {
public static void main(String[] args) {
String filename = "person.txt";
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
Person person = (Person) ois.readObject();
ois.close();
fis.close();
System.out.println("Deserialized data: ");
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Password: " + person.getPassword());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们首先从person.txt文件中读取序列化后的Person对象,并将其反序列化为一个Person对象。
4. transient关键词的体验
在上述示例中,我们使用了transient关键词来修饰Person类中的password属性,这意味着在序列化时不会将该属性序列化到文件中。
因此,当我们反序列化Person对象时,password属性的值为null。
通过上述示例,我们可以体验到transient关键词在序列化和反序列化中的作用。
阅读全文