摘要:把字節(jié)序列恢復(fù)為對(duì)象的過(guò)程稱(chēng)為對(duì)象的反序列化。代表對(duì)象輸入流,它的方法從一個(gè)源輸入流中讀取字節(jié)序列,再把它們反序列化為一個(gè)對(duì)象,并將其返回。接口繼承自接口,實(shí)現(xiàn)接口的類(lèi)完全由自身來(lái)控制序列化的行為,而僅實(shí)現(xiàn)接口的類(lèi)可以采用默認(rèn)的序列化方式。
把對(duì)象轉(zhuǎn)換為字節(jié)序列的過(guò)程稱(chēng)為對(duì)象的序列化。把字節(jié)序列恢復(fù)為對(duì)象的過(guò)程稱(chēng)為對(duì)象的反序列化。
對(duì)象的序列化主要有兩種用途:
1) 把對(duì)象的字節(jié)序列永久地保存到硬盤(pán)上,通常存放在一個(gè)文件中;
2) 在網(wǎng)絡(luò)上傳送對(duì)象的字節(jié)序列。
在很多應(yīng)用中,需要對(duì)某些對(duì)象進(jìn)行序列化,讓它們離開(kāi)內(nèi)存空間,入住物理硬盤(pán),以便長(zhǎng)期保存。比如最常見(jiàn)的是Web服務(wù)器中的Session對(duì)象,當(dāng)有 10萬(wàn)用戶(hù)并發(fā)訪問(wèn),就有可能出現(xiàn)10萬(wàn)個(gè)Session對(duì)象,內(nèi)存可能吃不消,于是Web容器就會(huì)把一些seesion先序列化到硬盤(pán)中,等要用了,再把保存在硬盤(pán)中的對(duì)象還原到內(nèi)存中。
當(dāng)兩個(gè)進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),彼此可以發(fā)送各種類(lèi)型的數(shù)據(jù)。無(wú)論是何種類(lèi)型的數(shù)據(jù),都會(huì)以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個(gè)Java對(duì)象轉(zhuǎn)換為字節(jié)序列,才能在網(wǎng)絡(luò)上傳送;接收方則需要把字節(jié)序列再恢復(fù)為Java對(duì)象。
二、JDK類(lèi)庫(kù)中的序列化API
java.io.ObjectOutputStream代表對(duì)象輸出流,它的writeObject(Object obj)方法可對(duì)參數(shù)指定的obj對(duì)象進(jìn)行序列化,把得到的字節(jié)序列寫(xiě)到一個(gè)目標(biāo)輸出流中。
java.io.ObjectInputStream代表對(duì)象輸入流,它的readObject()方法從一個(gè)源輸入流中讀取字節(jié)序列,再把它們反序列化為一個(gè)對(duì)象,并將其返回。
只有實(shí)現(xiàn)了Serializable和Externalizable接口的類(lèi)的對(duì)象才能被序列化。Externalizable接口繼承自 Serializable接口,實(shí)現(xiàn)Externalizable接口的類(lèi)完全由自身來(lái)控制序列化的行為,而僅實(shí)現(xiàn)Serializable接口的類(lèi)可以 采用默認(rèn)的序列化方式 。
對(duì)象序列化包括如下步驟:
1) 創(chuàng)建一個(gè)對(duì)象輸出流,它可以包裝一個(gè)其他類(lèi)型的目標(biāo)輸出流,如文件輸出流;
2) 通過(guò)對(duì)象輸出流的writeObject()方法寫(xiě)對(duì)象。
對(duì)象反序列化的步驟如下:
1) 創(chuàng)建一個(gè)對(duì)象輸入流,它可以包裝一個(gè)其他類(lèi)型的源輸入流,如文件輸入流;
2) 通過(guò)對(duì)象輸入流的readObject()方法讀取對(duì)象。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66185.html
摘要:從的序列化和反序列化說(shuō)起序列化是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程,而相反的過(guò)程就稱(chēng)為反序列化。當(dāng)使用接口來(lái)進(jìn)行序列化與反序列化的時(shí)候需要開(kāi)發(fā)人員重寫(xiě)與方法。 從java的序列化和反序列化說(shuō)起 序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程,而相反的過(guò)程就稱(chēng)為反序列化。 在java中允許我們創(chuàng)建可復(fù)用的對(duì)象,但是這些對(duì)象僅僅存在j...
摘要:引語(yǔ)平時(shí)我們?cè)谶\(yùn)行程序的時(shí)候創(chuàng)建的對(duì)象都在內(nèi)存中當(dāng)程序停止或者中斷了對(duì)象也就不復(fù)存在了如果我們能將對(duì)象保存起來(lái)在需要使用它的時(shí)候在拿出來(lái)使用就好了并且對(duì)象的信息要和我們保存時(shí)的信息一致序列化就可以解決了這樣的問(wèn)題序列化當(dāng)然不止一種方式如下序 引語(yǔ): ????平時(shí)我們?cè)谶\(yùn)行程序的時(shí)候,創(chuàng)建的對(duì)象都在內(nèi)存中,當(dāng)程序停止或者中斷了,對(duì)象也就不復(fù)存在了.如果我們能將對(duì)象保存起來(lái),在需要使用它的...
摘要:序列化對(duì)象和平臺(tái)無(wú)關(guān),序列化得到的字節(jié)流可以在任何平臺(tái)反序列化。從文件中或網(wǎng)絡(luò)上獲得序列化的字節(jié)流后,根據(jù)字節(jié)流中所保存的對(duì)象狀態(tài)及描述信息,通過(guò)反序列化重建對(duì)象。因此意味著不要序列化靜態(tài)變量不屬于對(duì)象狀態(tài)的一部分,因此它不參與序列化。 一.序列化和反序列化(1)序列化:將內(nèi)存中的對(duì)象轉(zhuǎn)化為字節(jié)序列,用于持久化到磁盤(pán)中或者通過(guò)網(wǎng)絡(luò)傳輸。對(duì)象序列化的最主要的用處就是傳遞和保存對(duì)象,保證對(duì)...
摘要:序列化反序列化主要體現(xiàn)在程序這個(gè)過(guò)程中,包括網(wǎng)絡(luò)和磁盤(pán)。如果是開(kāi)發(fā)應(yīng)用,一般這兩個(gè)注解對(duì)應(yīng)的就是序列化和反序列化的操作。協(xié)議的處理過(guò)程,字節(jié)流內(nèi)部對(duì)象,就涉及這兩種序列化。進(jìn)行第二步操作,也就是序列化和反序列化的核心是。 以下內(nèi)容,如有問(wèn)題,煩請(qǐng)指出,謝謝! 對(duì)象的序列化/反序列化大家應(yīng)該都比較熟悉:序列化就是將object轉(zhuǎn)化為可以傳輸?shù)亩M(jìn)制,反序列化就是將二進(jìn)制轉(zhuǎn)化為程序內(nèi)部的...
摘要:虛擬機(jī)讀取其他進(jìn)程的數(shù)據(jù)對(duì)象的方法可以運(yùn)行平臺(tái)上的其他程序該方法產(chǎn)生一個(gè)對(duì)象對(duì)象代表由該程序啟動(dòng)啟動(dòng)的子進(jìn)程類(lèi)提供如下三個(gè)方法用于和其子進(jìn)程通信獲取子進(jìn)程的錯(cuò)誤流獲取子進(jìn)程的輸入流獲取子進(jìn)程的輸出流這里的輸入流輸出流容易混淆從程序的角度思考 Java虛擬機(jī)讀取其他進(jìn)程的數(shù)據(jù) Runtime對(duì)象的exec方法可以運(yùn)行平臺(tái)上的其他程序,該方法產(chǎn)生一個(gè)Process對(duì)象,Process對(duì)象...
閱讀 2160·2021-11-25 09:43
閱讀 1972·2019-08-30 13:56
閱讀 1237·2019-08-30 12:58
閱讀 3435·2019-08-29 13:52
閱讀 768·2019-08-26 12:17
閱讀 1473·2019-08-26 11:32
閱讀 952·2019-08-23 13:50
閱讀 1314·2019-08-23 11:53