您好,登录后才能下订单哦!
本篇内容主要讲解“如何实现类对象的序列化/反序列化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现类对象的序列化/反序列化”吧!
有了序列化的支持类后,如果想要实现序列化和反序列化操作则可以利用以下两个类完成。
序列化:ObjectOutputStream:
类定义:public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants构造方法: public ObjectOutputStream(OutputStream out) throws IOException操作方法: public final void writeObject(Object obj) throws IOException
反序列化:ObjectInputStream:
类定义:public class ObjectInputStream extends InputStream implements ObjectInput,ObjectStreamConstants构造方法: public ObjectInputStream(InputStream in) throws IOException操作方法: public final Object readObject() throws IOException, ClassNotFoundException
范例:实现序列化与反序列化
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable; @SuppressWarnings("serial")class Person implements Serializable {//Person类可以被序列化private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age; } @Overridepublic String toString() {return "姓名:" + this.name + "、年龄:" + this.age; } }public class JavaAPIDemo {private static final File SAVE_FILE=new File("D:" + File.separator + "mldn.person");public static void main(String[] args) throws Exception {//saveObject(new Person("小喷嚏",78));System.out.println(loadObject()); }public static void saveObject(Object obj)throws Exception{ ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(SAVE_FILE)); oos.writeObject(obj); //序列化oos.close(); }public static Object loadObject()throws Exception{ ObjectInputStream ois=new ObjectInputStream(new FileInputStream(SAVE_FILE)); Object obj= ois.readObject(); //反序列化ois.close();return obj; } }
在Java中的对象序列化与反序列化必须使用内部提供的对象操作流,因为这里面牵扯到了二进制数据的格式,所以不能自定义处理,另外如果要想实现一组对象的序列化,则可以使用对象数组完成。
在很多的实际项目开发过程之中,开发者很少能见到ObjectOutputStream、ObjectInputStream类的直接操作,因为会有一些容器帮助开发者自动实现。
到此,相信大家对“如何实现类对象的序列化/反序列化”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。