为什么要说这个类,我们在远程调用的时候都会用到这个类
1、串行化
首先要理解串行化是什么,串行化是讲对象状态(属性、方法、参数等)写入字节流的过程,这样我们可以把对象状态保存在内存,文件中,假如我们要用到这个对象,我们从这里反串行化还原成对象。
2、实现Serializable的接口和类可以通过串行化和反串行化,Serializable接口没有方法,只是作为一个标记(可以串行化和反串行化)
3、objectOutput 和 objectInput (讲这两个类的原因是里面有实现序列化和反序列化的方法)
objectOutput 里面有个writeObject(Object object),这个方法是用来把对象写入到流中的方法
列如:
try (ObjectOutput objectOutput = new ObjectOutputStream(new FileOutputStream("D://array.txt"));){
SerializableEntity entity = new SerializableEntity();
entity.setMessage("你好");
objectOutput.writeObject(entity); //内部实现其实是保存了object状态
}catch (Exception e){
e.printStackTrace();
}
下面是对象在文件的状态
![]()
下面我们可以通过objectInput的readObject()从文件还原对象
try (ObjectInput input = new ObjectInputStream(new FileInputStream("D://array.txt"))){
SerializableEntity entity = (SerializableEntity) input.readObject();//取出object
System.out.println(entity.getMessage()); //结果 “你好”
}catch (Exception e){
e.printStackTrace();
}
所以大家知道远程调用为什么一定要用到序列化,因为你要通过网络流的方法还原远程对象,所以本地才可以调用
本文介绍了序列化的基本概念及其在远程调用中的作用。详细解释了如何通过实现Serializable接口来使类支持序列化,并提供了使用objectOutput和objectInput进行序列化与反序列化的实例。
404

被折叠的 条评论
为什么被折叠?



