import java.io.*; /** * 序列化: 将对象存到本地 * 反序列化: 将本地的数据加载到程序用 * very奈斯: 像分布式gui 本地服务器收到另一个本地服务器的对象 诶!都能用 * 像ssm,ssh,阿里的doober的分布式框架都使用了序列化和反序列化 * 但是18年java官方说至少三分之一的bug是由此产生的(序列化安全问题等等,简单实用的大败笔) * 官方还没有给一个好的技术代替,因为很多主流框架springboot等都在用序列化技术 * 目前能用但是不建议用 */ public class serialize { public static void main(String[] args) throws IOException, ClassNotFoundException { //序列化: 如何将对象存到文件 // Book book = new Book("金苹果","描述了苹果种植的过程"); // ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("/Users/christopoher/Desktop/book.txt")); // oos.writeObject(book);//传进来的book对象如果是接了serializable接口,才能允许写出 // oos.close(); //反序列化技术: 将文件内容转变成对象 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("/Users/christopoher/Desktop/book.txt")); // Object o = ois.readObject(); // 必须是相同包相同类 Book o = (Book) ois.readObject(); // 或者强转为Book类 System.out.println(o); } // 内部类 // 加一个Serializable的标记接口 static class Book implements Serializable{ // 这些attribute的类都要实现Serializable的 private String name; private String info; public Book(String name, String info) { this.name = name; this.info = info; } public Book() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", info='" + info + '\'' + '}'; } } }
序列化简化I
最新推荐文章于 2024-09-08 12:41:07 发布