import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
* @author 作者 FFish Zhang:
* @version 创建时间:2012-12-5 上午11:13:12
* 类说明
*/
public class SerializationUtil {
private static final String FILE_NAME="c:/obj.bin";
public static void writeObject(Object obj){
try{
if(obj==null)throw new NullPointerException();
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(new File(FILE_NAME)));
out.writeObject(obj);
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static Object readObject(){
Object o=null;
try{
ObjectInputStream in=new ObjectInputStream(new FileInputStream(new File(FILE_NAME)));
o=in.readObject();
in.close();
}catch(Exception e){
e.printStackTrace();
}
return o;
}
}
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Person implements Serializable{
private static final long serialVersion=60407L;
private String name;
private Salary salary;
public Person(String name,Salary salary){
this.name=name;
this.salary=salary;
}
// 序列化委托方法 out在writeObject的时候回调该Serial是否含有一个writeObject方法
private void writeObject(ObjectOutputStream out) throws IOException{
out.defaultWriteObject();
out.writeInt(salary.getBonus());
}
// 反序列化委托方法,,确保salary不被读取
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
in.defaultReadObject();
salary=new Salary(in.readInt(),100);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Salary getSalary() {
return salary;
}
public void setSalary(Salary salary) {
this.salary = salary;
}
}
import java.io.Serializable;
public class Salary implements Serializable {
private static final long serialVersionUid=44663L;
private int baseSalary;
private int bonus;
public Salary(int baseSalary,int bonus)
{
this.baseSalary=baseSalary;
this.bonus=bonus;
}
public int getBaseSalary() {
return baseSalary;
}
public void setBaseSalary(int baseSalary) {
this.baseSalary = baseSalary;
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
}
public class Serial {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Salary salary=new Salary(1000,2500);
Person person=new Person("张飞",salary);
SerializationUtil.writeObject(person);
}
}
/**
* @author 作者 FFish Zhang:
* @version 创建时间:2012-12-5 上午11:33:54
* 类说明
*/
public class Deserizlize {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p=(Person) SerializationUtil.readObject();
System.out.println("name:"+p.getName());
System.out.println("basePay:"+p.getSalary().getBaseSalary());
System.out.println("bonus:"+p.getSalary().getBonus());
}
}