黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 常見問題 為什么JAVA對象需要實(shí)現(xiàn)序列化?

為什么JAVA對象需要實(shí)現(xiàn)序列化?

更新時(shí)間:2019-08-31 09:00:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2116次

  今天動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)為大家介紹“為什么JAVA對象需要實(shí)現(xiàn)序列化?”,希望通過此文大家能夠知道JAVA對象需要實(shí)現(xiàn)序列化的原因,下面大家就隨小編一起看看JAVA對象需要實(shí)現(xiàn)序列化的原因吧?

u=567293549,2129878699&fm=15&gp=0.jpg

序列化是一種用來處理對象流的機(jī)制。

  所謂對象流:就是將對象的內(nèi)容進(jìn)行流化??梢詫α骰蟮膶ο筮M(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。

  序列化是為了解決在對對象流進(jìn)行讀寫操作時(shí)所引發(fā)的問題。

  序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口(標(biāo)記接口),該接口沒有需要實(shí)現(xiàn)的方法,implements Serializable只是為了標(biāo)注該對象是可被序列化的,然后使用一個(gè)輸出流(如:FileOutputStream)來構(gòu)造一個(gè)ObjectOutputStream(對象流)對象;接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。

  什么時(shí)候使用序列化呢?

  1、對象序列化可以實(shí)現(xiàn)分布式對象。

  主要應(yīng)用例如:RMI(即遠(yuǎn)程調(diào)用Remote Method Invocation)要利用對象序列化運(yùn)行遠(yuǎn)程主機(jī)上的服務(wù),就像在本地機(jī)上運(yùn)行對象時(shí)一樣。

  2、java對象序列化不僅保留一個(gè)對象的數(shù)據(jù),而且遞歸保存對象引用的每個(gè)對象的數(shù)據(jù)。

  可以將整個(gè)對象層次寫入字節(jié)流中,可以保存在文件中或在網(wǎng)絡(luò)連接上傳遞。利用對象序列化可以進(jìn)行對象的"深復(fù)制",即復(fù)制對象本身及引用的對象本身。序列化一個(gè)對象可能得到整個(gè)對象序列。

  3、序列化可以將內(nèi)存中的類寫入文件或數(shù)據(jù)庫中。

  比如:將某個(gè)類序列化后存為文件,下次讀取時(shí)只需將文件中的數(shù)據(jù)反序列化就可以將原先的類還原到內(nèi)存中。也可以將類序列化為流數(shù)據(jù)進(jìn)行傳輸。總的來說就是將一個(gè)已經(jīng)實(shí)例化的類轉(zhuǎn)成文件存儲(chǔ),下次需要實(shí)例化的時(shí)候只要反序列化即可將類實(shí)例化到內(nèi)存中并保留序列化時(shí)類中的所有變量和狀態(tài)。

  4、 對象、文件、數(shù)據(jù),有許多不同的格式,很難統(tǒng)一傳輸和保存。

  序列化以后就都是字節(jié)流了,無論原來是什么東西,都能變成一樣的東西,就可以進(jìn)行通用的格式傳輸或保存,傳輸結(jié)束以后,要再次使用,就進(jìn)行反序列化還原,這樣對象還是對象,文件還是文件

  因?yàn)镴AVA中要將對象序列化為 流的形式 進(jìn)行傳輸。

  對象的序列化就是為了數(shù)據(jù)傳輸,在你的代碼的里是對象格式,而在傳輸?shù)臅r(shí)候不可能還保持這對象的樣子。

  當(dāng)兩個(gè)進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),彼此可以發(fā)送各種類型的數(shù)據(jù)。無論是何種類型的數(shù)據(jù),都會(huì)以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個(gè)Java對象轉(zhuǎn)換為字節(jié)序列,才能在網(wǎng)絡(luò)上傳送;接收方則需要把字節(jié)序列再恢復(fù)為Java對象。

概念

  序列化:把Java對象轉(zhuǎn)換為字節(jié)序列的過程。

  反序列化:把字節(jié)序列恢復(fù)為Java對象的過程。

  用途 對象的序列化主要有兩種用途:

  1、把對象的字節(jié)序列永久地保存到硬盤上,通常存放在一個(gè)文件中。

  2、在網(wǎng)絡(luò)上傳送對象的字節(jié)序列。

  所謂的Serializable,就是java提供的通用數(shù)據(jù)保存和讀取的接口。至于從什么地方讀出來和保存到哪里去都被隱藏在函數(shù)參數(shù)的背后了。這樣子,任何類型只要實(shí)現(xiàn)了Serializable接口,就可以被保存到文件中,或者作為數(shù)據(jù)流通過網(wǎng)絡(luò)發(fā)送到別的地方。也可以用管道來傳輸?shù)较到y(tǒng)的其他程序中。這樣子極大的簡化了類的設(shè)計(jì)。只要設(shè)計(jì)一個(gè)保存一個(gè)讀取功能就能解決上面說得所有問題。

  java的"對象序列化"能讓你將一個(gè)實(shí)現(xiàn)了Serializable接口的對象轉(zhuǎn)換成一組byte,這樣日后要用這個(gè)對象時(shí)候,你就能把這些byte數(shù)據(jù)恢復(fù)出來,并據(jù)此重新構(gòu)建那個(gè)對象了。

  工作流當(dāng)中流程變量的幾種數(shù)據(jù)類型:string、integer、short、long、double、boolean、date、binary、serializable,這就是為什么要將javabean實(shí)現(xiàn)序列化的原因,因?yàn)槟銓ο笤O(shè)置到流程變量中必須要實(shí)現(xiàn)序列化,否則會(huì)在設(shè)置流程變量的時(shí)候報(bào)錯(cuò)找不到該類型。

  java對象序列化機(jī)制就是把內(nèi)存中的Java對象(User之類的JavaBean)轉(zhuǎn)換成二進(jìn)制流。java對象序列化后可以很方便的存儲(chǔ)或者在網(wǎng)絡(luò)中傳輸。

  Java的序列化機(jī)制是通過運(yùn)行時(shí)判斷類的序列化ID(serialVersionUID)來判定版本的一致性。

  在反序列化時(shí),java虛擬機(jī)會(huì)通過二進(jìn)制流中的serialVersionUID與本地的對應(yīng)的實(shí)體類進(jìn)行比較,如果相同就認(rèn)為是一致的,可以進(jìn)行反序列化,正確獲得信息,否則拋出序列化版本不一致的異常。

  所以涉及到數(shù)據(jù)傳輸或者存儲(chǔ)的類,嚴(yán)格意義上來說都要加上序列化ID,這也是一種良好的編程習(xí)慣。

timg (2).jpg

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)介紹的“為什么JAVA對象需要實(shí)現(xiàn)序列化?”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩视频在线第一区 | 一个人在线看免费的视频 | 久久久久综合国产 | 欧美一级高清片免费一级 | 美女色黄 | 免费一级毛片清高播放 | 在线观看的黄网 | 大香网伊人久久综合网2021 | 黄色理论视频 | 成片免费观看视频在线网 | 欧美日韩性高爱潮视频 | 午夜成私人影院在线观看 | 午夜一级影院 | 免费色视频在线观看 | 在线播放一区二区精品产 | 天天看天天摸色天天综合网 | 碰碰碰人人澡人人爱摸 | 成人深夜福利在线播放不卡 | 久色网| 久久天天躁夜夜躁狠狠躁2015 | 欧美伊人久久 | 中国黄色网页 | 免费成人午夜视频 | www.99热.com| 丝袜足控免费软件xx | 成人欧美在线视频 | h片在线播放 | 羞羞视频网页版 | 一级一级一片在线观看 | 欧美日韩综合视频 | 天天操夜夜操免费视频 | 亚洲成a人片77777在线播放 | 亚洲国产第一区二区三区 | 成人18免费观看的动漫 | 色香影视 | 国产日产高清欧美一区二区三区 | 欧美日韩国产一区二区三区播放 | 91在线亚洲综合在线 | 亚洲免费小视频 | 欧美亚洲天堂网 | 国内精品免费 |