Java对象的序列化和反序列化


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;


public class SirializableTest implements Serializable {
private String name;
private transient String password;

public SirializableTest(String name, String password) {
this.name = name;
this.password = password;
}

@Override
public String toString() {
return "name: " + name + ",password: " + password;
}

public static void main(String args[]) {

try {
File f = new File("c:\\a.obj");
if(!f.exists()) {
f.createNewFile();
}

//序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
out.writeObject("HelloWorld!");
out.writeObject(new Date());
out.writeObject(new SirializableTest("yang.ug","root07yxb"));
out.close();
//反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
System.out.println(in.readObject());
System.out.println(in.readObject());
System.out.println(in.readObject());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值