Serializable序列化
- Person
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
@Data
@ToString
@AllArgsConstructor
public class Person implements Serializable {
private String name;
private int age;
}
- Teacher
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
@Data
@ToString
@AllArgsConstructor
public class Teacher implements Serializable {
private String name;
private Person person;
}
- 写序列化到文件
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
// TODO 还没测试成功
public class WriteObject {
public static void main(String[] args) {
// try (//创建一个ObjectOutputStream输出流
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Home\\teacher.txt"))) {
// //将对象序列化到文件s
// Person person = new Person("9龙", 23);
// Teacher teacher = new Teacher("路飞", person);
// oos.writeObject(teacher);
// } catch (Exception e) {
// e.printStackTrace();
// }
try (//创建一个ObjectOutputStream输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\teacher2.txt"))) {
//将对象序列化到文件s
Person person = new Person("路飞", 20);
Teacher t1 = new Teacher("雷利", person);
Teacher t2 = new Teacher("红发香克斯", person);
//依次将4个对象写入输入流
oos.writeObject(t1);
oos.writeObject(t2);
System.out.println(t2.hashCode());
oos.writeObject(person);
oos.writeObject(t2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 从文件读序列化并实例化
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class ReadObject {
public static void main(String[] args) {
// try (//创建一个ObjectInputStream输入流
// ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Home\\teacher.txt"))) {
// Teacher teacher = (Teacher) ois.readObject();
// System.out.println(teacher);
// } catch (Exception e) {
// e.printStackTrace();
// }
try (//创建一个ObjectInputStream输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\teacher2.txt"))) {
Teacher t1 = (Teacher) ois.readObject();
Teacher t2 = (Teacher) ois.readObject();
Person p = (Person) ois.readObject();
Teacher t3 = (Teacher) ois.readObject();
System.out.println(t1 == t2);
System.out.println(t1.getPerson() == p);
System.out.println(t2.getPerson() == p);
System.out.println(t2 == t3);
System.out.println(t2.hashCode());
System.out.println(t3.hashCode());
System.out.println(t1.getPerson() == t2.getPerson());
} catch (Exception e) {
e.printStackTrace();
}
}
}