日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java图片序列化_Java中的强大武器——对象的序列化

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java图片序列化_Java中的强大武器——对象的序列化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原標題:Java中的強大武器——對象的序列化

所謂對象序列化就是將對象的狀態(tài)轉(zhuǎn)換成字節(jié)流,以后可以通過這些值再生成相同狀態(tài)的對象。這個過程也可以通過網(wǎng)絡(luò)實現(xiàn),可以先在Windows機器上創(chuàng)建一個對象,對其序列化,然后通過網(wǎng)絡(luò)發(fā)給一臺Unix機器,然后在那里準確無誤地重新“裝配”。是不是很神奇。

請點擊此處輸入圖片描述

也許你會說,只了解一點點,但從來沒有接觸過,其實未必如此。RMI、Socket、JMS、EJB你總該用過一種吧,彼此為什么能夠傳遞Java對象,當然都是對象序列化機制的功勞。

第一次使用Java的對象序列化是做某項目,當時要求把幾棵非常復(fù)雜的樹(JTree)及相應(yīng)的數(shù)據(jù)保存下來(就是我們常用的保存功能),以便下次運行程序時可以繼續(xù)上次的操作。

那時XML技術(shù)在網(wǎng)上非常的熱,而且功能也強大,再加上樹的結(jié)構(gòu)本來就和XML存儲數(shù)據(jù)的格式很像。作為一項對新技術(shù)比較有興趣的我當然很想嘗試一下。不過經(jīng)過仔細分析,發(fā)現(xiàn)如果采用XML保存數(shù)據(jù),后果真是難以想象:哪棵樹的哪個節(jié)點被展開、展開到第幾級、節(jié)點當前的屬性是什么。真是不知該用A、B、C還是用1、2、3來表示。

還好,發(fā)現(xiàn)了Java的對象序列化機制,問題迎刃而解,只需簡單的將每棵樹的根節(jié)點序列化保存到硬盤上,下次再通過反序列化后的根節(jié)點就可以輕松的構(gòu)造出和原來一模一樣的樹來。

請點擊此處輸入圖片描述

其實保存數(shù)據(jù),尤其是復(fù)雜數(shù)據(jù)的保存正是對象序列化的典型應(yīng)用。最近另一個項目就遇到了需要對非常復(fù)雜的數(shù)據(jù)進行存取,通過使用對象的序列化,問題同樣化難為簡。

對象的序列化還有另一個容易被大家忽略的功能就是對象復(fù)制(Clone),Java中通過Clone機制可以復(fù)制大部分的對象,但是眾所周知,Clone有深層Clone和淺層Clone,如果你的對象非常非常復(fù)雜,假設(shè)有個100層的Collection(夸張了點),如果你想實現(xiàn)深層Clone,真是不敢想象,如果使用序列化,不會超過10行代碼就可以解決。

還有就是Swing組件,如果你有兩個很象很象(或是一模一樣)的比較難以構(gòu)造的Swing組件,你該怎么辦,也許你想到了Clone,但是偏偏Java的Swing組件沒有提供Clone方法。別急,使用序列化,6行代碼搞定:

ByteArrayOutputStream

byteOut = new ByteArrayOutputStream();

ObjectOutputStream out

= new ObjectOutputStream(byteOut);

out.writeObject(combo);

ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());

ObjectInputStream in

=new ObjectInputStream(byteIn);

JComboBox comb2 = (JComboBox)in.readObject();

雖然Java的序列化非常簡單、強大,但是要用好,還有很多地方需要注意。比如曾經(jīng)序列化了一個對象,可由于某種原因,該類做了一點點改動,然后重新被編譯,那么這時反序列化剛才的對象,將會出現(xiàn)異常。

你可以通過添加serialVersionUID屬性來解決這個問題。如果你的類是個單態(tài)(Singleton)類,是否允許用戶通過序列化機制復(fù)制該類,如果不允許你需要謹慎對待該類的實現(xiàn)。

想要更多的企業(yè)求職加分項目案例,關(guān)注Java學習交流群285154486,每天會講解分享項目,答疑解惑。

請點擊此處輸入圖片描述返回搜狐,查看更多

責任編輯:

總結(jié)

以上是生活随笔為你收集整理的java图片序列化_Java中的强大武器——对象的序列化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。