18 Java序列化
可以通过序列化来保存一个对象的状态(实例变量)到文件中,也可以从这个格式化的文件中很容易地读取对象的状态从而可以恢复保存的对象。
ObjectOutputStream:输出流并序列化对象。
ObjectInputStream:读取流并反序列化对象。
Serializable:一个对象要想被序列化,那么它的类就要实现此接口。
示例代码如下:
1> Book.java
2> Student.java
3> Simulator.java
代码运行结果如下:
总结如下:
1> 基本类型的数据可以直接序列化。
2> 对象要被序列化,它的类必须要实现Serializable接口;如果一个类中有引用类型的实例变量,这个引用类型也要实现Serializable接口。在上述例子中,Student类有一个Book类型的实例,如果想让Student的对象成功序列化,那么Book也必须要实现Serializable接口。当一个父类实现序列化时,子类自动实现序列化,不需要显示实现Serializable接口。
3> static, transient后的变量不能被序列化。
19 Java序列化与JSON序列化
Java观点:Object2Object,使用时简单快速,由于是二进制,序列化的数据小。
JSON观点:JSON格式与语言无关,扩展性强。
以上是传统观点,经过大牛的测试之后,JSON-smart比java序列化更吊。所以究竟谁更优秀还有待考究。