Java>序列化和反序列化、Serializable、UnSerializable,案例:序列化、反序列化集合ArrayList<MyselfDefinedClass object>

Person类

public class Person implements Serializable {
    static final long serialVersionUID = 10086L;
    private String name ;
    public Integer age;

    // constructor
    public Person() {
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

Method

	// Person ArrayList<Person> Serializable and UnSerializable
    // 存储person类的集合(ArrayList<Person>)的序列化和反序列化

    // ArrayList<Person> Serializable
    // 以下为 ArrayList<Person> 对象的序列化
    public static void method_Serializable() throws IOException {
        // Create byte output stream
        // 创建字节输出流
        FileOutputStream fileOutputStream = new FileOutputStream("E:\\folder_io_dome\\domeDir03\\Person_1.object");
        // create object output stream
        // 创建对象输出流
        ObjectOutputStream obj = new ObjectOutputStream(fileOutputStream);
        // create array_list
        ArrayList<Person> person_array_list = new ArrayList<>();
        // add object
        person_array_list.add(new Person("yuanhao_01", 18));
        person_array_list.add(new Person("yuanhao_02", 18));
        person_array_list.add(new Person("yuanhao_03", 18));
        person_array_list.add(new Person("yuanhao_04", 18));
        // show name
        for (int i = 0; i < person_array_list.size(); i++) {
            System.out.println(person_array_list.get(i).getName());
        }
        // will object write disk
        // Serializable ArrayList<Person> on the disk
        // 将对象序列化至硬盘
        obj.writeObject(person_array_list);
        // close stream
        // 关闭流
        obj.flush();
        obj.close();
        fileOutputStream.close();
    }

    // ArrayList<Person> UnSerializable
    // 以下为 ArrayList<Person> 对象的反序列化
    public static void method_UnSerializable() throws IOException, ClassNotFoundException {
        // create byte input stream
        // 创建字节输入流
        FileInputStream fileInputStream = new FileInputStream("E:\\folder_io_dome\\domeDir03\\Person_1.object");

        // create object input stream
        // 创建对象输入流
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);

        // UnSerializable Object
        Object obj = objectInputStream.readObject();

        // create ArrayList_object , accept object
        // 创建ArrayList对象,接受obj对象
        ArrayList<Person> arrayList_person = null;

        // flag obj isCast ArrayList_object
        // 判断object是否可以转换为ArrayList
        if (obj instanceof ArrayList) arrayList_person = (ArrayList)obj;

        Person p = null;
        // flag , element on the 'arrayList_person' cast to Person
        // 判断,arrayList_person中的元素,是否可以转换为Person对象
        if (arrayList_person.get(0) instanceof Person){
            for (int i = 0; i < arrayList_person.size(); i++) {
                p = arrayList_person.get(i);
                System.out.println("Name is : " + p.getName() + "  Age is :" + p.getAge());
            }
        }else {
            // output show
            System.out.println("Element on the arrayList , not is person object");
        }
        objectInputStream.close();
        fileInputStream.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值