IO包中的其他对象

来源:互联网 发布:炼数成金 黄志洪 知乎 编辑:程序博客网 时间:2024/04/30 16:09
1.       对象的序列化序列化的本意是把并行数据转换成串行数据的处理过程。对象序列化是指将对象的状态数据以字节流的形式进行处理,一般用于实现对象的持久性,即长久保持一个对象的状态并在需要时获取该对象的信息以重新构造一个状态完全相同的对象。对象的序列化可以理解为使用I/O“对象流”类型实现的对象读/写操作。---ObjectInputStream以及ObjectOutputStream

2.       实现对象序列化。Employ类,属性包括name、age和dept,方法有构造方法、getter和setter方法以及showInfo方法使用ObjectOutputStream对象的writeOjbect()将员工对象存入指定文件。该方法将内存中员工对象的状态信息(姓名、年龄和部门)以有序二进制流的形式输出到目标文件中。--对象序列化对象序列化的主要任务:写出对象的状态信息,并遍历该对象对其他对象的引用,递归的序列化所有被引用到的其他对象,从而建立完整的序列化流。使用ObjectInputStream对象的readObject()将文件中的员工信息读取出来。--反序列化。该方法反序列化输入流中的下一个对象,遍历该对象中所有对其他对象的引用,并递归的反序列化这些引用对象。

3.       并不是任何引用类型的对象都可以被序列化,只有实现了java.io.Serializable接口的类的对象才可以。--出于安全性考虑,因为一些封装敏感信息或时效性强的信息的类不建议支持序列化,以避免出现泄密或信息失效问题。Serializable接口中实际上没有定义任何属性和方法,它只是起到标记性作用(标记接口)。在Java的语言规范中规定,Serializable接口的实现类均应提供无参的构造方法,以供可能的反序列化操作、系统重建对象时自动调用。类中的静态成员不会被序列化。对应非静态的成员如果也不想被序列化,可以通过transient关键字修饰。

4.       例题:

package com.hbsi.io;

import java.io.*;

public class Employee implements Serializable {//标志性接口

/**

 *

 */

private static final long serialVersionUID =1L;

private String name;

private transient int age;//加transient修饰的非静态的成员也是不被序列化

private String dept;

private static int count=100;//静态成员不会被序列化

 

public static int getCount() {

           return count;

}

public static void setCount(int count) {

           Employee.count = count;

}

public String getName() {

           return name;

}

public void setName(String name) {

           this.name = name;

}

public int getAge() {

           return age;

}

public void setAge(int age) {

           this.age = age;

}

public String getDept() {

           return dept;

}

public void setDept(String dept) {

           this.dept = dept;

}

public Employee(String name, int age, String dept) {

           super();

           this.name = name;

           this.age = age;

           this.dept = dept;

}

public Employee() {

           super();

}

@Override

public String toString() {

           return "员工信息为:[age=" + age + ", dept=" + dept + ", name=" + name

                             + "]";

}

}

原创粉丝点击