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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Serializable的作用

發(fā)布時(shí)間:2024/4/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serializable的作用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前兩天接觸到VO,DTO,entity這些概念,發(fā)現(xiàn)別人的代碼中會(huì)有 implements serializable這個(gè)東西,之前并沒(méi)有見(jiàn)過(guò)這種寫(xiě)法,就去了解了一下原因

import java.io.Serializable;public class Admin implements Serializable { }

  

Serializable主要作用將類的實(shí)例持久化保存,序列化就是保存,反序列化就是讀取。保存也不一定保存在本地,也可以保存到遠(yuǎn)方。類一定要實(shí)現(xiàn)Serializable才可以

這個(gè)介紹非常的不接地氣,于是我與去看了幾篇博客,是這樣理解的:

????序列化的過(guò)程,就是一個(gè)“freeze”的過(guò)程,它將一個(gè)對(duì)象freeze(冷凍)住,然后進(jìn)行存儲(chǔ),等到再次需要的時(shí)候,再將這個(gè)對(duì)象de-freeze就可以立即使用。

????我們以為的沒(méi)有進(jìn)行序列化,其實(shí)是在聲明的各個(gè)不同變量的時(shí)候,由具體的數(shù)據(jù)類型幫助我們實(shí)現(xiàn)了序列化操作。

????如果有人打開(kāi)過(guò)Serializable接口的源碼,就會(huì)發(fā)現(xiàn),這個(gè)接口其實(shí)是個(gè)空接口,那么這個(gè)序列化操作,到底是由誰(shuí)去實(shí)現(xiàn)了呢?其實(shí),看一下接口的注釋說(shuō)明就知道,當(dāng)我們讓實(shí)體類實(shí)現(xiàn)Serializable接口時(shí),其實(shí)是在告訴JVM此類可被序列化,可被默認(rèn)的序列化機(jī)制序列化。

為什么需要序列化
1,存儲(chǔ)對(duì)象在存儲(chǔ)介質(zhì)中,以便在下次使用的時(shí)候,可以很快捷的重建一個(gè)副本。也就是When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object.

問(wèn)題:我沒(méi)有實(shí)現(xiàn)序列化的時(shí)候,我一樣可以存入到我的sqlserver或者M(jìn)ySQL、Oracle數(shù)據(jù)庫(kù)中啊,為什么一定要序列化才能存儲(chǔ)呢????

2,便于數(shù)據(jù)傳輸,尤其是在遠(yuǎn)程調(diào)用的時(shí)候!

?

其實(shí)說(shuō)了這么多,想表達(dá)的意思就是:

Serializable接口是一個(gè)里面什么都沒(méi)有的接口
它的源代碼是public?interface?Serializable{},即什么都沒(méi)有。

如果一個(gè)接口里面什么內(nèi)容都沒(méi)有,那么這個(gè)接口是一個(gè)標(biāo)識(shí)接口,比如,一個(gè)學(xué)生遇到一個(gè)問(wèn)題,排錯(cuò)排了幾天也沒(méi)解決,此時(shí),她舉手了(示意我去幫他解決),然后我過(guò)去,幫他解決了,那么這個(gè)舉手其實(shí)就是一個(gè)標(biāo)識(shí),自己不能解決的問(wèn)題標(biāo)示我去幫他解決,在Java中的這個(gè)Serializable接口是給JVM看的,告訴JVM,我不做這個(gè)類的序列化了,你(JVM)給我序列化,序列化就是變成二進(jìn)制流,比如云計(jì)算、Hadoop,特別是Hadoop完全就是分布式環(huán)境,那么就要涉及到對(duì)象要在網(wǎng)絡(luò)中傳輸,里面的全是二進(jìn)制流,當(dāng)然你來(lái)做這個(gè)序列化操作也可以,但是這個(gè)類里面可能還有一個(gè)類,如果你把外面的類對(duì)象Person變成二進(jìn)制,那么里面也要序列化(這要用到深度遍歷,很麻煩),干脆告訴JVM,讓他來(lái)幫你做。
serializable接口就是Java提供用來(lái)進(jìn)行高效率的異地共享實(shí)例對(duì)象的機(jī)制,實(shí)現(xiàn)這個(gè)接口即可。

序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^(guò)程。與序列化相對(duì)的是反序列化,它將流轉(zhuǎn)換為對(duì)象。這兩個(gè)過(guò)程結(jié)合起來(lái),可以輕松地存儲(chǔ)和傳輸數(shù)據(jù)。

轉(zhuǎn)載于:https://www.cnblogs.com/tentacion/p/11356174.html

總結(jié)

以上是生活随笔為你收集整理的Serializable的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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