Serializable接口的作用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
實(shí)現(xiàn)java.io.Serializable 接口的類是可序列化的。沒(méi)有實(shí)現(xiàn)此接口的類將不能使它們的任一狀態(tài)被序列化或逆序列化。序列化類的所有子類本身都是可序列化的。這個(gè)序列化接口沒(méi)有任何方法和域,僅用于標(biāo)識(shí) 序列化的語(yǔ)意。允許非序列化類的子類型序列化,子類型可以假定負(fù)責(zé)保存和恢復(fù)父類型的公有的、保護(hù)的和(如果可訪問(wèn))包的域的狀態(tài)。只要該類(擴(kuò)展)有一 個(gè)無(wú)參構(gòu)造子,可初始化它的狀態(tài),那么子類型就可承擔(dān)上述職責(zé)。在這種情況下申明一個(gè)可序列化的類是一個(gè)錯(cuò)誤。此錯(cuò)誤將在運(yùn)行時(shí)被檢測(cè)。就是可以把對(duì)象存 到字節(jié)流,然后可以恢復(fù)!
例如:Integer實(shí)現(xiàn)了Serializable,所以可以把一個(gè)Integer的對(duì)象用IO寫到文件里,之后再可以從文件里讀出,如你開始寫入的時(shí)候那個(gè)對(duì)象的intValue() 是5的話,那讀出來(lái)之后也是5。這一點(diǎn)體現(xiàn)了用序化類的作用,即用來(lái)傳送類的對(duì)象。
所謂的Serializable,就是java提供的通用數(shù)據(jù)保存和讀取的接口。至于從什么地方讀出來(lái)和保存到哪里去都被隱藏在函數(shù)參數(shù)的背后了。這樣子,任何類型只要實(shí)現(xiàn)了Serializable接口,就可以被保存到文件中,或者作為數(shù)據(jù)流通過(guò)網(wǎng)絡(luò)發(fā)送到別的地方。也可以用管道來(lái)傳輸?shù)较到y(tǒng)的其他程序中。這樣子極大的簡(jiǎn)化了類的設(shè)計(jì)。只要設(shè)計(jì)一個(gè)保存一個(gè)讀取功能就能解決上面說(shuō)得所有問(wèn)題。
Object serialization的定義:
Object serialization 允許你將實(shí)現(xiàn)了Serializable接口的對(duì)象轉(zhuǎn)換為字節(jié)序列,這些字節(jié)序列可以被完全存儲(chǔ)以備以后重新生成原來(lái)的對(duì)象。
serialization不但可以在本機(jī)做,而且可以經(jīng)由網(wǎng)絡(luò)操作(RMI)。這個(gè)好處是很大的----因?yàn)樗詣?dòng)屏蔽了操作系統(tǒng)的差異,字節(jié)順序(用Unix下的c開發(fā)過(guò)網(wǎng)絡(luò)編程的人應(yīng)該知道這個(gè)概念)等。比如,在Window平臺(tái)生成一個(gè)對(duì)象并序列化之,然后通過(guò)網(wǎng)絡(luò)傳到一臺(tái)Unix機(jī)器上,然后可以在這臺(tái)Unix機(jī)器上正確地重構(gòu)這個(gè)對(duì)象。
Object serialization主要用來(lái)支持2種主要的特性:
1、Java的RMI(remote method invocation).RMI允許象在本機(jī)上一樣操作遠(yuǎn)程機(jī)器上的對(duì)象。當(dāng)發(fā)送消息給遠(yuǎn)程對(duì)象時(shí),就需要用到serializaiton機(jī)制來(lái)發(fā)送參數(shù)和接收返回直。
2、Java的JavaBeans. Bean的狀態(tài)信息通常是在設(shè)計(jì)時(shí)配置的。Bean的狀態(tài)信息必須被存起來(lái),以便當(dāng)程序運(yùn)行時(shí)能恢復(fù)這些狀態(tài)信息。這也需要serializaiton機(jī)制。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法
這篇文章主要介紹了Java實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法,涉及Java針對(duì)數(shù)據(jù)庫(kù)的讀取及文件寫入等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11SpringBoot+JPA?分頁(yè)查詢指定列并返回指定實(shí)體方式
這篇文章主要介紹了SpringBoot+JPA?分頁(yè)查詢指定列并返回指定實(shí)體方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12詳解springboot中各個(gè)版本的redis配置問(wèn)題
這篇文章主要介紹了詳解springboot中各個(gè)版本的redis配置問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04java 多態(tài)性詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了java 多態(tài)性詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射的方法示例
本文主要介紹了Mybatis實(shí)現(xiàn)關(guān)聯(lián)關(guān)系映射的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Springboot Thymeleaf字符串對(duì)象實(shí)例解析
這篇文章主要介紹了Springboot Thymeleaf字符串對(duì)象實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2007-09-09解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無(wú)法加載主類的問(wèn)題
這篇文章主要介紹了解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無(wú)法加載主類的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09spring mvc實(shí)現(xiàn)文件上傳并攜帶其他參數(shù)的示例
本篇文章主要介紹了spring mvc實(shí)現(xiàn)文件上傳并攜帶其他參數(shù)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02JDK14的新特性NullPointerExceptions的使用
這篇文章主要介紹了JDK14的新特性NullPointerExceptions的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04