对象序列化

不能序列化的情况

  1. 没有实现了Serializable接口的类
  2. static静态字段
  3. transient 修饰的字段
  4. 只是子类实现了Serializable接口,而父类没有实现,则父类字段不能被序列化

注意:
父类实现了Serializable接口,则子类能够被序列化

    //在属性发生变化后【比如添加字段】,也能够反序列化成功。兼容历史数据
    //有serialVersionUID才可以加字段
    private static final long serialVersionUID = 8358532000092354056L;
package com.accdays.base;

import com.alibaba.fastjson.JSON;

import java.io.*;

/**
 * @author 
 * @version 1.0
 * @description
 * @updateRemark
 * @updateUser
 * @createDate 2019/7/18 17:11
 * @updateDate 2019/7/18 17:11
 **/
public class SerializableTest {


    public static void main(String[] args) throws IOException , ClassNotFoundException {
//        FlyPig flyPig=new FlyPig("奔驰","飞猪1","red");
        FlyPig flyPig=new FlyPig("benchi","pig_1","red");

//        serializ(flyPig);

        FlyPig flyPig2=(FlyPig)deserializ();

        System.out.println(JSON.toJSONString(flyPig2));



    }

    //序列化
    static void serializ(Object object)  throws IOException {

        File file=new File("E:/ser.txt");
        try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file))) {
            objectOutputStream.writeObject(object);
        }

    }

    static Object deserializ() throws IOException, ClassNotFoundException {

        Object result=null;

        try( ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("E:/ser.txt")) ){

            result=objectInputStream.readObject();

        }

        return result;

    }


}


class FlyPig implements Serializable {

    //在属性发生变化后【比如添加字段】,也能够反序列化成功。兼容历史数据
    //有serialVersionUID才可以加字段
    private static final long serialVersionUID = 8358532000092354056L;
    //静态字段不能序列化
    private static String AGE="269";
    // transient 不能序列化
    transient private String carName;


    private String name;
    private String color;
    private String addFile;



    public FlyPig() {
    }

    public FlyPig(String carName, String name, String color) {
        this.carName = carName;
        this.name = name;
        this.color = color;
    }

    public String getCarName() {
        return carName;
    }

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }


    public String getAddFile() {
        return addFile;
    }

    public void setAddFile(String addFile) {
        this.addFile = addFile;
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值