ObjectInputStream序列化反序列化

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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值