JAVA 序列化

一、概念

      序列化:将对象转换为字节序列的过程。

      反序列化:将字节序列恢复为对象的过程。

二、简单示例

package serialization;

import java.io.Serializable;

public class Person implements Serializable {

    /**
     * @Fields serialVersionUID : 自动生成的序列化id
     */

    private static final long serialVersionUID = 903332120406898371L;

    private String name;
    
    //使用transient修饰,序列化时,将忽略该字段。
    private transient String password;

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
Person类(被序列化的对象)
package serialization;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public final class SerializePerson {

    public void serPerson() throws IOException {

        Person p = new Person();

        p.setName("Test");
        p.setPassword("password");

        File f = new File(".\\src\\serialization\\Person.out");

        FileOutputStream fo = new FileOutputStream(f);
        ObjectOutputStream oo = new ObjectOutputStream(fo);

        oo.writeObject(p);
        oo.close();

        System.out.println("Person对象序列化成功!");
    }

    @SuppressWarnings("resource")
    public Person deserPerson() throws Exception {

        File f = new File(".\\src\\serialization\\Person.out");

        FileInputStream fis = new FileInputStream(f);
        ObjectInputStream ois = new ObjectInputStream(fis);

        Person person = (Person) ois.readObject();
        System.out.println("Person对象反序列化成功!");
        return person;

    }

}
序列化与反序列化方法
package serialization;

public class Test {

    public static void main(String[] args) throws Exception {

        SerializePerson sp = new SerializePerson();
        sp.serPerson();
        Person p = sp.deserPerson();

        System.out.println("name:" + p.getName() + ", password:"
                + p.getPassword());
    }
}
测试类

使用 transient 修饰字段,序列化时将忽略该字段。

转载于:https://www.cnblogs.com/wscy/p/4783699.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值