您的位置:首页 > 移动开发 > Objective-C

ObjectInputStream序列化反序列化

2016-05-20 15:58 555 查看
import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

public class ObjectInputOutputDemo {

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

/* Stu stu=new Stu("xiao hong",30);
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("H:\\test1.txt"));
oos.writeObject(stu);
oos.close();*/
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("H:\\test1.txt"));
try {
Stu stu=(Stu)ois.readObject();
System.out.println(stu);
System.out.println(stu.aaa);
stu.sing();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

class Stu implements Serializable{

/**

*/
private static final long serialVersionUID = 1L;

// public final static float serialVersionUID = 7920913767168547445f;
private String name;
private int age;
private String abc="abc";//反序列化后又加入的属性,反序列化对象中默认这个属性默认值为null。
public int aaa=100;//反序列化后,又加入的属性。 这样用反序列化的对象调用这个属性时,,结果为0.  
//说明反序列化时,如果原对象添加了对象。而反序列化对象中原本无这个对象,会添加上这个对象。但是设置的值为0.
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;
}
Stu(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return name+"--"+age;
}
//反序列化后又加入的方法。反序列化对象可以调用这个方法。
//前面 Stu stu时,调用了Stu这个类,应该立刻产生了Stu类对象。这个对象里面方法区已经设定好了。
//如果反序列号对象的序列号,和Stu类对象序列号一致。则认为是类的对象。 这个反序列对象就可以调用这个类的方法。
//也可以调用原本对象不存在的属性。但是初始值为属性类型的默认值。
public void sing(){
System.out.println("dinglingling…………"+abc);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息