博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java序列化(二) - JDK默认序列化
阅读量:5934 次
发布时间:2019-06-19

本文共 3554 字,大约阅读时间需要 11 分钟。

hot3.png

仅实现Serializable接口的默认序列化

类实现 Serializable接口

package meng.springboot.demo.obj;import java.io.Serializable;import java.util.Date;/** * 若类仅仅实现了Serializable接口: * ObjectOutputStream 采用默认的序列化方式,对对象的非 transient 的实例变量进行序列化。 * ObjcetInputStream 采用默认的反序列化方式,对对象的非 transient  的实例变量进行反序列化。 * * @author mengzhang6 * @date 2018/10/22 8:57 */public class User implements Serializable {    private int id;    private String name;    private Date addDate;    /**     * 使用transient表示,不参与序列化     */    private transient String no;    /**     * 声明为static和transient类型的成员数据不能被序列化     * 因为static代表类的状态,transient代表对象的临时数据。     */    public static String staNo;    /**     * Archive也需要实现Serializable     */    private Archive archive;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Date getAddDate() {        return addDate;    }    public void setAddDate(Date addDate) {        this.addDate = addDate;    }    public String getNo() {        return no;    }    public void setNo(String no) {        this.no = no;    }    public Archive getArchive() {        return archive;    }    public void setArchive(Archive archive) {        this.archive = archive;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", addDate=" + addDate +                ", no='" + no + '\'' +                ", archive=" + archive +                '}';    }}

组合类也要实现Serializable接口

package meng.springboot.demo.obj;import java.io.Serializable;/** * 档案 * * @author mengzhang6 * @date 2018/10/22 13:26 */public class Archive implements Serializable{    private String archiveNo;    private String address;    private transient String phone;    public Archive() {    }    public Archive(String archiveNo, String address, String phone) {        this.archiveNo = archiveNo;        this.address = address;        this.phone = phone;    }    public String getArchiveNo() {        return archiveNo;    }    public void setArchiveNo(String archiveNo) {        this.archiveNo = archiveNo;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    @Override    public String toString() {        return "Archive{" +                "archiveNo='" + archiveNo + '\'' +                ", address='" + address + '\'' +                ", phone='" + phone + '\'' +                '}';    }}

单元测试

@Test    public void writeObject1() throws IOException {        User user = new User();        user.setId(1001);        user.setName("晨猫");        user.setAddDate(Calendar.getInstance().getTime());        user.setNo("Xs01");        user.setArchive(new Archive("Mc001","Hangzhou","18366557620"));        System.out.println(user);        OutputStream outputStream = new FileOutputStream(new File("User.out"));        ObjectOutputStream oos = new ObjectOutputStream(outputStream);        oos.writeObject(user);    }    @Test    public void readObject1() throws IOException, ClassNotFoundException {        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("User.out"));        User user = (User) ois.readObject();        System.out.println(user);    }

 

转载于:https://my.oschina.net/mengzhang6/blog/2250618

你可能感兴趣的文章
从 Objective-C 里的 Alloc 和 AllocWithZone 谈起
查看>>
django多对多数据库建立 以及数据的传输 并进行增加 删除 修改
查看>>
类似于京东商城等的商品分类搜索筛选功能实现
查看>>
032最长有效括号
查看>>
【数据结构 JavaScript版】- web前端开发精品课程【红点工场】--javascript--栈的概念...
查看>>
js动态改变根元素字体大小
查看>>
Python系列:三、流程控制循环语句--技术流ken
查看>>
博客的"Hello World"
查看>>
python logger日志配置
查看>>
django中使用AJAX时如何获取表单参数(按钮携带参数)
查看>>
List洗牌和权重选取算法
查看>>
leetcode_20.c++有效的括号
查看>>
C# 之泛型详解
查看>>
iOS扩展Extension之Today
查看>>
MyBatis参数绑定规则及原理分析
查看>>
vue中表单的动态绑定
查看>>
YAML 在Python中的应用
查看>>
Jmeter(参数化)
查看>>
[JSOI2008]最大数maxnumber
查看>>
Python基础知识之json&pickle模块
查看>>