为什么要说这个类,我们在远程调用的时候都会用到这个类
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(); }
所以大家知道远程调用为什么一定要用到序列化,因为你要通过网络流的方法还原远程对象,所以本地才可以调用