序列化

来源:互联网 发布:淘宝卖家申请小二介入 编辑:程序博客网 时间:2024/06/02 17:43

1.什么叫做序列化

java的序列化是能将一个实现了serializable接口的对象转换成一组byte,这样日后要用这个对象的时候,就能把这些byte数据恢复过来,并据此构建以前那个对象。

在跨网络平台也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异。比如说如果在UNIX机器上创建一个对象,序列化后在Windows机器上可以进行重建。

完全不用担心平台不同所造成的影响,或者byte数据的顺序怎样之类的细节。


2.序列化实现重要功能

1)java远程方法调用(Remote Method Invocation,简称RMI):在远程对象传递消息的时候,通过序列化传送参数和返回值,就能使远程调用像调用自己机器上的对象

那样。

2)javaBean:因为Bean的状态信息通常是在设计时配置的,这些信息必须保存起来,供程序调用的时候用,而对象序列化就是负责这部分,所以在这里序列化必不可少。


3.如何实现对象序列化

要想实现对象序列化,必须实现java.io.Serializable接口,查看API发现这个接口里面没有任何方法,所以序列化接口只是一个标记型接口,只要一个类实现了该接口,java

系统就知道该对象可以序列化。类实现了序列化接口,该类的对象就可以存盘或通过网络传输了。要对对象进行读/写操作,首先我们要建立某些OutputStream对象,然后

将其包装在一个ObjectOutputStream对象内,然后调用writeObject()对对象进行序列化。如果要将序列化好的对象还原,那么我们就先建立InputStream包装在ObjectInputStream内,然后调用readObject()即可


4.实例

创建一个用户对象(为了说明问题只有用户名,密码)并将它们写入user.obj文件,然后从文件读取这个user对象,在屏幕显示出来

class User implements Serializable{

private String username;

private String password;

public User(String name,String pwd){

this.username = name;

this.password = pwd;

}

public String toString(){

return "username="+username+"password="+password;

}

}

public class ObjectSerializableDemo{

public static void main(String[] args) throws Exception{

String filename = "D:/user.obj";

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename));

oos.writeObject(new User("张三","1111111"));

oos.flush;

oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename));

User user = (User)ois.readObject();

System.out.println(user);

ois.close();

}

}

0 0
原创粉丝点击