将一个Java对象序列化到文件中

  • Post author:
  • Post category:java


public class DomainObject implements Serializable {

    private static final long serialVersionUID = -6960820659912840745L;

    private String objName;

    /** 不参加序列化 */
    private transient String scope;

    public String getObjName() {
        return objName;
    }

    public void setObjName(String objName) {
        this.objName = objName;
    }

    public String getScope() {
        return scope;
    }

    @Override
    public String toString() {
        return "DomainObject{" +
                "objName='" + objName + '\'' +
                ", scope='" + scope + '\'' +
                '}';
    }

    public void setScope(String scope) {
        this.scope = scope;
    }

    public DomainObject(String objName, String scope) {
        this.objName = objName;
        this.scope = scope;
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        DomainObject obj = new DomainObject("JavaObjetc", "JVM");

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        /** 序列化 */
        ObjectOutputStream outputStream = new ObjectOutputStream(baos);
        outputStream.writeObject(obj);

        /** 反序列化 */
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        ObjectInputStream inputStream = new ObjectInputStream(bais);
        DomainObject newObj = (DomainObject) inputStream.readObject();
        System.out.println(newObj.toString());
    }
}

transient 不参加序列化。

是否允许反序列化,取决于序列化 ID 是否一致。

为什么要序列化,反序列化?

当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。



版权声明:本文为qq_35717240原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。