io-序列化ObjectOutputStream-反序列化ObjectInpputStream-关键字transient
关键字transient : 表示游离,如果实例化对象里面的某个字段不参加序列化,需要在该字段前面加上该关键字
序列化一个:users 实例对象:
1、实例化对象必须 实现接口: Serializable;
2、提供无参数构造方法,有参数构造方法,重写toString方法
import java.io.Serializable; public class User implements Serializable { private int no; // transient关键字表示游离的,不参与序列化。 private transient String name; // name不参与序列化操作! public User() { } public User(int no, String name) { this.no = no; this.name = name; } @Override public String toString() { return "User{" + "no=" + no + ", name='" + name + '\'' + '}'; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
序列化ObjectOutputStream:
一次序列化多个对象:
1、创建一个List集合(实现序列化接口)
2、给集合泛型里面一个users对象
3、参与序列化的ArrayList集合以及集合中的元素User都需要实现 java.io.Serializable接口。
import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; /* 一次序列化多个对象,可以将对象放到集合当中,序列化集合。 提示: 参与序列化的ArrayList集合以及集合中的元素User都需要实现 java.io.Serializable接口。 */ public class ObjectOutputStreamTest { public static void main(String[] args) throws Exception{ List<User> userList = new ArrayList<>(); userList.add(new User(1,"zhangsan")); userList.add(new User(2, "lisi")); userList.add(new User(3, "wangwu")); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("users")); // 序列化一个集合,这个集合对象中放了很多其他对象。 oos.writeObject(userList); oos.flush(); oos.close(); } }
反序列化ObjectInpputStream
/* 反序列化集合 */ public class ObjectInputStreamTest{ public static void main(String[] args) throws Exception{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream("users"));
//Object obj = ois.readObject();
//向下转型判断:测试一下该集合是否为user对象; 输出测试 :true //System.out.println(obj instanceof List);
List<User> userList = (List<User>)ois.readObject(); for(User user : userList){ System.out.println(user); }
//关闭资源 ois.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix