serializable接口的作用有哪些
小編給大家分享一下serializable接口的作用有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
serializable接口的作用:1、存儲(chǔ)對(duì)象在存儲(chǔ)介質(zhì)中,以便在下次使用的時(shí)候,可以很快捷的重建一個(gè)副本;2、便于數(shù)據(jù)傳輸,尤其是在遠(yuǎn)程調(diào)用的時(shí)候。
serializable接口的作用:
Serializable接口是啟用其序列化功能的接口。實(shí)現(xiàn)java.io.Serializable 接口的類是可序列化的。沒(méi)有實(shí)現(xiàn)此接口的類將不能使它們的任意狀態(tài)被序列化或逆序列化。
個(gè)人理解:
這個(gè)介紹非常的不接地氣,于是我與去看了幾篇博客,有一個(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)了序列化操作。
如果有人打開過(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ī)制序列化。
序列化的作用:
*序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^(guò)程。與序列化相對(duì)的是反序列化,它將流轉(zhuǎn)換為對(duì)象。這兩個(gè)過(guò)程結(jié)合起來(lái),可以輕松地存儲(chǔ)和傳輸數(shù)據(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í)現(xiàn)java.io.Serializable這個(gè)接口是為序列化,serialVersionUID 用來(lái)表明實(shí)現(xiàn)序列化類的不同版本間的兼容性。如果你修改了此類, 要修改此值。
否則以前用老版本的類序列化的類恢復(fù)時(shí)會(huì)出錯(cuò)。
實(shí)現(xiàn)后如果你用的是工具的話會(huì)出來(lái)警告,他會(huì)提示你,可以自動(dòng)生成private static final long serialVersionUID = 1L; 為了在反序列化時(shí),確保類版本的兼容性,最好在每個(gè)要序列化的類中加入private static final long serialVersionUID這個(gè)屬性,具體數(shù)值自己定義.
關(guān)于serialVersionUID的解釋
serialVersionUID作用: 序列化時(shí)為了保持版本的兼容性,即在版本升級(jí)時(shí)反序列化仍保持對(duì)象的唯一性。
你可以隨便寫一個(gè),在Eclipse中它替你生成一個(gè),有兩種生成方式: 一個(gè)是默認(rèn)的1L,比如:
privatestaticfinallongserialVersionUID=1L;
一個(gè)是根據(jù)類名、接口名、成員方法及屬性等來(lái)生成一個(gè)64位的哈希字段,比如:
privatestaticfinallongserialVersionUID=-8940196742313994740L;
總結(jié)
以上是生活随笔為你收集整理的serializable接口的作用有哪些的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在ABAP里模拟实现Java Sprin
- 下一篇: gta5怎么买机库