序列化 -- Serializable

一、对象序列化,面向那些实现了Serializable接口的对象,可将他们西黄换成一系列字节,并可在以后完全恢复回原来的样子,这一过程也可以在网络上进行,这意味着序列化机制能自动补偿操作系统之间的差异。

import java.io.ByteArrayInputStream;

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


class Data implements Serializable{
private int i;
Data(int x){
i = x;
}
public String toString(){
return Integer.toString(i);
}
}
public class Worm implements Serializable{
private static int r(){
return (int)(Math.random()*10);
}
private Data[] d = {
new Data(r()),new Data(r()),new Data(r())
};
private Worm next;
private char c;
Worm(int i, char x){
System.out.println("Worm Constructor : " + i);
c = x;
if(--i > 0){
next = new Worm(i, (char)(x+1));
}
}
Worm() {
System.out.println("Default constructor");
}
public String toString(){
String s = ":" + c + "(";
for(int i=0; i<d.length; i++){
s += d[i].toString();
}
s += ")";
if(next != null){
s += next.toString();
}
return s;
}
public static void main(String[] args) {
Worm w = new Worm(6, 'a');
System.out.println("w = " + w);
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("worm.out"));
out.writeObject("Worm storage");
out.writeObject(w);
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("worm.out"));
String s = (String)in.readObject();
Worm w2 = (Worm)in.readObject();
System.out.println(s + " , w2 = " + w2);
} catch (Exception e) {
e.printStackTrace();
}

try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bout);
out.writeObject("Worm storage");
out.writeObject(w);
out.flush();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray()));
String s = (String)in.readObject();
Worm w3 = (Worm)in.readObject();
System.out.println(s + " , w3 = " + w3);
} catch (Exception e) {
e.printStackTrace();
}
}

}

结果:

Worm Constructor : 6
Worm Constructor : 5
Worm Constructor : 4
Worm Constructor : 3
Worm Constructor : 2
Worm Constructor : 1
w = :a(064):b(601):c(149):d(935):e(240):f(183)
Worm storage , w2 = :a(064):b(601):c(149):d(935):e(240):f(183)
Worm storage , w3 = :a(064):b(601):c(149):d(935):e(240):f(183)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值