天天看點

基于protostuff的序列化工具類開發

[toc]

前面在介紹protostuff的基本使用時(可以參考文章protostuff基本使用),都是針對某個類寫的序列化和反序列化方法,顯然這樣不具有通用性,例如在進行遠端過程調用時,傳輸的對象并不唯一,這時就需要開發具有通用性的序列化工具類,即不管序列化的對象是什麼類型,都可以使用該工具類進行序列化。下面就來開發這樣的工具類。

基于這個需要,下面會開發兩個序列化工具類,一個是不具有緩存功能的<code>serializationutil</code>,一個是具有緩存功能的增強版本<code>serializationutil2</code>。

需要注意的是,protostuff序列化工具類的開發需要大量使用到java泛型的知識,是以在閱讀這些源代碼時應該需要具有一定的泛型知識儲備,否則代碼閱讀起來會比較難懂,盡管我已經全部加了注釋。

下面直接給出源代碼:

serializationutil的問題在于,每次調用序列化方法和反序列化方法時都需要重新生成一個schema對象,是以可以把生成的schema對象儲存起來,在下一次調用方法時就不需要重新生成這些schema對象,這樣可以提高序列化和反序列化的性能。

測試代碼如下:

執行testutil01時的輸出結果如下:

執行testutil02時的輸出結果如下: