什么是Serializable接口
一個對象序列化的接口揖曾,一個類只有實現(xiàn)了Serializable接口落萎,它的對象才能被序列化。
什么是序列化炭剪?
序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程练链。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象奴拦。這兩個過程結(jié)合起來媒鼓,可以輕松地存儲和傳輸數(shù)據(jù)。
為什么要序列化對象
把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化
把字節(jié)序列恢復(fù)為對象的過程稱為對象的反序列化
什么情況下需要序列化错妖?
當我們需要把對象的狀態(tài)信息通過網(wǎng)絡(luò)進行傳輸绿鸣,或者需要將對象的狀態(tài)信息持久化,以便將來使用時都需要把對象進行序列化
那為什么還要繼承Serializable暂氯。那是存儲對象在存儲介質(zhì)中潮模,以便在下次使用的時候,可以很快捷的重建一個副本痴施。
或許你會問擎厢,我在開發(fā)過程中,實體并沒有實現(xiàn)序列化辣吃,但我同樣可以將數(shù)據(jù)保存到mysql动遭、Oracle數(shù)據(jù)庫中,為什么非要序列化才能存儲呢齿尽?
我們來看看Serializable到底是什么沽损,跟進去看一下灯节,我們發(fā)現(xiàn)Serializable接口里面竟然什么都沒有循头,只是個空接口
一個接口里面什么內(nèi)容都沒有,我們可以將它理解成一個標識接口炎疆。
比如在課堂上有位學(xué)生遇到一個問題卡骂,于是舉手向老師請教,這時老師幫他解答形入,那么這位學(xué)生的舉手其實就是一個標識全跨,自己解決不了問題請教老師幫忙解決。在Java中的這個Serializable接口其實是給jvm看的亿遂,通知jvm浓若,我不對這個類做序列化了,你(jvm)幫我序列化就好了蛇数。
Serializable接口就是Java提供用來進行高效率的異地共享實例對象的機制挪钓,實現(xiàn)這個接口即可。
iOS開發(fā)中也有Serializable耳舅,只是平時不注意碌上,知道用,不知道為什么