java反序列化

import java.io.*;
import java.util.Arrays;

public class ser {
    public static void main(String[] args) throws Exception {
        person p = new person();
        p.setUsername("dt");
        p.setEmail("dt@.com");

	//创建字节数组输出流对象
        ByteArrayOutputStream a = new ByteArrayOutputStream();

        //创建Java对象序列化输出流对象,把序列化后的字节数组存进字节数组输出流(a)
        ObjectOutputStream o = new ObjectOutputStream(a);
        o.writeObject(p);
        o.flush();
        o.close();
        //先把流 转为字节数组再把字节数组转为字符串  a.toByteArray()返回的是一个实例,toByteArray()返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,用方括号(“[]”)括起来。相邻元素由字符“, ”(逗号后跟空格)分隔。如果 a 为空,则返回“空”。
        System.out.println(Arrays.toString(a.toByteArray()));

        //把要反序列化的数组放进字节数组输入流
        ByteArrayInputStream b = new ByteArrayInputStream(a.toByteArray());

        // 通过反序列化输入流(bais),创建Java对象输入流(ObjectInputStream)对象
        ObjectInputStream in = new ObjectInputStream(b);

        //反序列化后创建person类的一个实例
        person pp = (person) in.readObject();
        System.out.println(pp.setUsername("ddtt"));
        in.close();

    }
}

class person implements Serializable {
    private String username;
    private String email;

    public String setUsername(String username) {
        return username;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getUsername() {
        return username;
    }

    public String getEmail() {
        return email;
    }
}

posted @ 2021-10-15 20:29  大头DDTT  阅读(113)  评论(0)    收藏  举报