国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

原創(chuàng)-關(guān)于java中的對(duì)象序列化

瀏覽:62日期:2024-07-02 08:44:05
內(nèi)容: java對(duì)象序列化機(jī)制一般來(lái)講有兩種用途:1.需要將對(duì)象的狀態(tài)保存到文件中,而后能夠通過(guò)讀入對(duì)象狀態(tài)來(lái)重新構(gòu)造對(duì)象,恢復(fù)程序狀態(tài)2.使用套接字在網(wǎng)絡(luò)上傳送對(duì)象的程序來(lái)說(shuō),是很有用的。 我們通過(guò)讓類實(shí)現(xiàn)java.io.Serializable 接口可以將類序列化。這個(gè)接口是一個(gè)制造者(marker)接口。也就是說(shuō),對(duì)于要實(shí)現(xiàn)它的類來(lái)說(shuō),該接口不需要實(shí)現(xiàn)任何方法。它主要用來(lái)通知Java虛擬機(jī)(JVM),需要將一個(gè)對(duì)象序列化。 對(duì)于這個(gè),有幾點(diǎn)我們需要明確:1.并非所有類都可以序列化,在cmd下,我們輸入serialver java.net.socket,可以得到socket是否可序列化的信息,實(shí)際上socket是不可序列化的。2.java有很多基礎(chǔ)類已經(jīng)實(shí)現(xiàn)了serializable接口,比如string,vector等。但是比如hashtable就沒(méi)有實(shí)現(xiàn)serializable接口。 將對(duì)象讀出或者寫入流的主要類有兩個(gè): ObjectOutputStream與ObjectInputStream 。ObjectOutputStream 提供用來(lái)將對(duì)象寫入輸出流的writeObject方法, ObjectInputStream提供從輸入流中讀出對(duì)象的readObject方法。使用這些方法的對(duì)象必須已經(jīng)被序列化的。也就是說(shuō),必須已經(jīng)實(shí)現(xiàn)Serializable接口。如果你想writeobject一個(gè)hashtable對(duì)象,那么,會(huì)得到一個(gè)異常。 下面舉個(gè)例子: import java.io.*;public class testser implements Serializable { public int ii; testser() { } testser( int param ) { ii = param; }}testser是一個(gè)實(shí)現(xiàn)了serializable接口的類。 讀寫這個(gè)序列化過(guò)的類:import java.io.*;public class Ser { private static String datafile; datafile='ser.data'; public static void main( String[] argv ) { System.out.println( 'Java Serialization Demo.' ); SerData data; try { ObjectInputStream in = new ObjectInputStream( new FileInputStream( datafile )); data = (SerData) in.readObject(); in.close(); } catch (Exception e) { data = new testser(); } System.out.println( 'Original data: ii = ' + data.ii ); data.ii++; try { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream( datafile ) ); out.writeObject( data ); out.flush(); out.close(); } catch (Exception e) { System.out.println( e ); } }}還有可以通過(guò)套接字傳遞序列化對(duì)象,大概類似。看到這里或許很多人都會(huì)有個(gè)疑問(wèn),是否所有的對(duì)象都可以序列化呢?當(dāng)然是不可以的了,至于為什么不可以,那就有很多原因了,比如:1.安全方面的原因,比如一個(gè)對(duì)象擁有private,public等f(wàn)ield,對(duì)于一個(gè)要傳輸?shù)膶?duì)象,比如寫到文件,或者進(jìn)行rmi傳輸?shù)鹊?在序列化進(jìn)行傳輸?shù)倪^(guò)程中,這個(gè)對(duì)象的private等域是不受保護(hù)的.2.資源分配方面的原因,比如socket,thread類,如果可以序列化,進(jìn)行傳輸或者保存,也無(wú)法對(duì)他們進(jìn)行重新的資源分配,而且,也是沒(méi)有必要這樣實(shí)現(xiàn). 【matrix 原創(chuàng)】 轉(zhuǎn)載請(qǐng)注明來(lái)自Matrix.org.cn Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
1. Python reversed反轉(zhuǎn)序列并生成可迭代對(duì)象2. ASP基礎(chǔ)入門第七篇(ASP內(nèi)建對(duì)象Response)3. Thinkphp3.2.3反序列化漏洞實(shí)例分析4. ASP基礎(chǔ)入門第六篇(ASP內(nèi)建對(duì)象Request)5. Webform 內(nèi)置對(duì)象 Session對(duì)象、Application全局對(duì)象,ViewState詳細(xì)介紹6. python。對(duì)象集中的身份。和散列7. python 使用事件對(duì)象asyncio.Event來(lái)同步協(xié)程的操作8. jsp的九大內(nèi)置對(duì)象深入講解9. MessagePack 和System.Text.Json 序列化和反序列化性能及對(duì)比分析10.
主站蜘蛛池模板: 柳州市| 衡东县| 青神县| 丰镇市| 景德镇市| 南昌市| 安达市| 宁南县| 武义县| 九龙城区| 剑川县| 陵水| 松原市| 台江县| 克什克腾旗| 建宁县| 龙州县| 阳山县| 博兴县| 大安市| 贞丰县| 勐海县| 淳安县| 孟州市| 东明县| 光山县| 郯城县| 镇雄县| 托克托县| 稷山县| 崇州市| 历史| 会东县| 漯河市| 新干县| 西峡县| 霍城县| 寻甸| 嵊泗县| 田东县| 宜都市|