【Serializable】 序列化接口你真的用过吗?

1 Serializable 使用示例

import com.google.common.collect.Lists;

import java.io.*;
import java.util.List;
import java.util.logging.Logger;

/**
 * 不同的序列化code 会导致反序列话异常
 */
public class SerialUUIDTest implements Serializable {
    private static final Logger log = Logger.getLogger(SerialUUIDTest.class.getName());
    private static final long serialVersionUID = -7599705434260488493L;
    //private static final long serialVersionUID = -759907434260488493L;

    private Integer age;
    private Integer age2;
    private String name;
    private List<String> likeSports;


    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public List<String> getLikeSports() {
        return likeSports;
    }

    public void setLikeSports(List<String> likeSports) {
        this.likeSports = likeSports;
    }

    @Override
    public String toString() {
        return "SerialUUIDTest{" +
                "age=" + age +
                ", serialVersionUID=" + serialVersionUID +
                ", age2=" + age2 +
                ", name='" + name + '\'' +
                ", likeSports=" + likeSports +
                '}';
    }

    public static void main(String[] args) {
        SerialUUIDTest test = new SerialUUIDTest();
        test.setAge(23);
        //test.setAge1(233);
        test.setName("zw");
        test.setLikeSports(Lists.newArrayList("A","B","c"));

        //serializeToDisk("/Users/tz/seriObjec.bin",test);
        SerialUUIDTest test1 = deserializeFromDisk("/Users/tz/seriObjec.bin");
        System.out.println(test1);
    }
    public static boolean serializeToDisk(String filename, SerialUUIDTest employees) {
        final String METHOD_NAME = "serializeToDisk(String filename, List<Employee> employees)";

        boolean ret = false;
        File file = new File(filename);
        try (ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file))) {
            log.info("Writing " + employees+ " employees to disk (using Serializable)...");
            outputStream.writeObject(employees);
            ret = true;
            log.info("Done.");

        } catch (IOException e) {
            e.printStackTrace();
        }
        return ret;
    }

    @SuppressWarnings("unchecked")
    public static SerialUUIDTest deserializeFromDisk(String filename) {
        final String METHOD_NAME = "deserializeFromDisk(String filename)";

        File file = new File(filename);
        int numberOfEmployees = 0;
        try (ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file))) {
            SerialUUIDTest ret = (SerialUUIDTest)inputStream.readObject();
            log.info("Deserialized List says it contains " + ret +
                    " objects...");

            log.info("Read " + numberOfEmployees + " employees from disk.");
            return ret;

        } catch (FileNotFoundException e) {
           e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }


}

2 结果说明
 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自驱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值