Java序列化

xiaomagezuishuai 2017-06-01 03:34:04
package seria;

import java.io.IOException;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.ArrayList;

public class Person implements Serializable{
private String name;
private int age;
public Person(String name,int age){
System.out.println("有参数构造器");
this.name=name;
this.age=age;
}
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;
}
//自定义序列化需要提供如下特殊签名的方法
private void writeObject(java.io.ObjectOutputStream out)throws IOException
{
out.defaultWriteObject();
System.out.println(this.getAge()+"1");
out.writeObject((new StringBuffer(name)).reverse());//相当于加了一下密
this.age=6;
System.out.println(this.getAge()+"2");
out.writeInt(age);
System.out.println("writeObject");
}

private void readObject(java.io.ObjectInputStream in)throws IOException,ClassNotFoundException
{
in.defaultReadObject();
this.name=(String)in.readObject().toString();
this.age=(int)in.readInt();
System.out.println("readObject");

}
}



package seria;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class WriteObject {
public static void main(String[] args) throws Exception{
ObjectOutputStream ooStream=new ObjectOutputStream(new FileOutputStream("bojext2.txt"));
Person person=new Person("孙悟空", 500);
ooStream.writeObject(person);
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("bojext.txt"));
Person p=(Person)ois.readObject();
System.out.println((person==p));
System.out.println(p.getName()+p.getAge()+"Person类");
System.out.println(Thread.currentThread().getName());
}
}

为什么将readobject中的this.name=(String)in.readObject().toString();
this.age=(int)in.readInt();将这两句话注释掉,输出结果就不一样了。
不注释输出 , 空悟孙6Person类
注释后输出, 孙悟空500Person类
...全文
179 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧