天天看点

基于protostuff的序列化工具类开发

[toc]

前面在介绍protostuff的基本使用时(可以参考文章protostuff基本使用),都是针对某个类写的序列化和反序列化方法,显然这样不具有通用性,例如在进行远程过程调用时,传输的对象并不唯一,这时就需要开发具有通用性的序列化工具类,即不管序列化的对象是什么类型,都可以使用该工具类进行序列化。下面就来开发这样的工具类。

基于这个需要,下面会开发两个序列化工具类,一个是不具有缓存功能的<code>serializationutil</code>,一个是具有缓存功能的增强版本<code>serializationutil2</code>。

需要注意的是,protostuff序列化工具类的开发需要大量使用到java泛型的知识,因此在阅读这些源代码时应该需要具有一定的泛型知识储备,否则代码阅读起来会比较难懂,尽管我已经全部加了注释。

下面直接给出源代码:

serializationutil的问题在于,每次调用序列化方法和反序列化方法时都需要重新生成一个schema对象,所以可以把生成的schema对象保存起来,在下一次调用方法时就不需要重新生成这些schema对象,这样可以提高序列化和反序列化的性能。

测试代码如下:

执行testutil01时的输出结果如下:

执行testutil02时的输出结果如下: