对象序列化

来源:互联网 发布:python和ruby的区别 编辑:程序博客网 时间:2024/05/22 06:14

有时候需要将对象保存到磁盘文件或者网络信息中,保存对象的过程实质上就是对象的持久化过程,对象持久化也就是记录对象的状态以便将来具有再生的能力。JAVA提供了对象流以实现对象的输入与输出,也就是对象持久化。

需要注意的是,在使用对象流之前必须将该对象序列化。所谓对象序列化就是将对象的状态转换成字节流,并且以后可以通过这些值再生相同状态的对象。简单来说,序列化就是一种用来处理对象流的机制,而对象流也就是将对象的内容进行流化,我们可以对流化后的对象进行读写操作,也将流化的对象传输与网络间。

完整例子

/**************************Person.java***********************/public class Person implements Serializable {String name;transient int age;          //被transient修饰的变量将不会被保存String major;    public Person(String name,int age,String major) {this.name=name;this.age =age;this.major=major;}public String toString(){return "Name: "+this.name+", Age: "+this.age+", Major: "+this.major;}}/**************************SerializableDemo.java*************/public class SerializableDemo {       public static void main(String[] args) {// TODO Auto-generated method stubPerson person=new Person("melon",16,"computer Science");Person tmp=null;try {FileOutputStream fos=new FileOutputStream("data.dat");ObjectOutputStream oos=new ObjectOutputStream(fos);oos.writeObject(person);oos.close();} catch (Exception e) {e.printStackTrace();   }try {FileInputStream fis =new FileInputStream("data.dat");ObjectInput ois=new ObjectInputStream(fis);tmp=(Person)ois.readObject();System.out.println(tmp.toString());ois.close();} catch (Exception e) {e.printStackTrace();}}}


程序运行结果:Name: melon, Age: 0, Major: computer Science

人的年龄属于个人隐私,本程序中Person类的成员变量age被transient关键字修饰,这样持久化Person对象时,他的age属性就不会保存。


0 0
原创粉丝点击