温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现类对象的序列化/反序列化

发布时间:2021-10-13 09:19:03 来源:亿速云 阅读:137 作者:iii 栏目:编程语言

本篇内容主要讲解“如何实现类对象的序列化/反序列化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现类对象的序列化/反序列化”吧!

序列化与反序列化处理

有了序列化的支持类后,如果想要实现序列化和反序列化操作则可以利用以下两个类完成。
序列化: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类的直接操作,因为会有一些容器帮助开发者自动实现。

到此,相信大家对“如何实现类对象的序列化/反序列化”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI