久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

原創-關于java中的對象序列化

瀏覽:79日期:2024-07-02 08:44:05
內容: java對象序列化機制一般來講有兩種用途:1.需要將對象的狀態保存到文件中,而后能夠通過讀入對象狀態來重新構造對象,恢復程序狀態2.使用套接字在網絡上傳送對象的程序來說,是很有用的。 我們通過讓類實現java.io.Serializable 接口可以將類序列化。這個接口是一個制造者(marker)接口。也就是說,對于要實現它的類來說,該接口不需要實現任何方法。它主要用來通知Java虛擬機(JVM),需要將一個對象序列化。 對于這個,有幾點我們需要明確:1.并非所有類都可以序列化,在cmd下,我們輸入serialver java.net.socket,可以得到socket是否可序列化的信息,實際上socket是不可序列化的。2.java有很多基礎類已經實現了serializable接口,比如string,vector等。但是比如hashtable就沒有實現serializable接口。 將對象讀出或者寫入流的主要類有兩個: ObjectOutputStream與ObjectInputStream 。ObjectOutputStream 提供用來將對象寫入輸出流的writeObject方法, ObjectInputStream提供從輸入流中讀出對象的readObject方法。使用這些方法的對象必須已經被序列化的。也就是說,必須已經實現Serializable接口。如果你想writeobject一個hashtable對象,那么,會得到一個異常。 下面舉個例子: import java.io.*;public class testser implements Serializable { public int ii; testser() { } testser( int param ) { ii = param; }}testser是一個實現了serializable接口的類。 讀寫這個序列化過的類: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 ); } }}還有可以通過套接字傳遞序列化對象,大概類似。看到這里或許很多人都會有個疑問,是否所有的對象都可以序列化呢?當然是不可以的了,至于為什么不可以,那就有很多原因了,比如:1.安全方面的原因,比如一個對象擁有private,public等field,對于一個要傳輸的對象,比如寫到文件,或者進行rmi傳輸等等,在序列化進行傳輸的過程中,這個對象的private等域是不受保護的.2.資源分配方面的原因,比如socket,thread類,如果可以序列化,進行傳輸或者保存,也無法對他們進行重新的資源分配,而且,也是沒有必要這樣實現. 【matrix 原創】 轉載請注明來自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
標簽: Java
相關文章:
主站蜘蛛池模板: 榆树市| 绥德县| 集安市| 安宁市| 图们市| 大余县| 承德县| 龙江县| 土默特左旗| 饶河县| 临潭县| 宝兴县| 柘荣县| 岐山县| 铜鼓县| 资源县| 来安县| 泸溪县| 东乡族自治县| 固始县| 尚义县| 枣强县| 榆树市| 宿州市| 武城县| 叶城县| 错那县| 西充县| 石泉县| 离岛区| 军事| 桓仁| 扶绥县| 杭州市| 蓝田县| 庆元县| 泽库县| 洞头县| 息烽县| 鸡西市| 汝城县|