日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java序列化接口的作用总结

發布時間:2025/3/17 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java序列化接口的作用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個對象有對應的一些屬性,把這個對象保存在硬盤上的過程叫做”持久化”.

把堆內存中的對象的生命周期延長,存入硬盤,做持久化操作.當下次再需要這個對象的時候,我們不用new了,直接從硬盤中讀取就可以了.(存儲到硬盤是一個文件,不需要我們去解析,如果用記事本打開解析會出現亂碼,解析要用特定的方式,不用我們管. 我們只需要讀取).

把對象存儲到硬盤上的一個文件中,這個文件的標準擴展名是(.object).

在很多框架中就會有這種.object結尾的文件,因為很多對象都不創建,創建起來太麻煩,直接讀取,而且有些對象的值你不知道,框架封存在.object文件中,直接讀取這個文件中的這個值就行了,不需要傳這個值.

1 import java.io.Serializable;2 /*3 * Serializable:用于給被序列化的類加入ID號。4 * 用于判斷類和對象是否是同一個版本。 5 */6 public class Person implements Serializable/*標記接口*/ {7 /**8 * transient:非靜態數據不想被序列化可以使用這個關鍵字修飾。 9 */ 10 private static final long serialVersionUID = 9527l; 11 // private transient String name; 12 private String name; 13 // private static int age; 14 private int age; 15 16 public Person(String name, int age) { 17 super(); 18 this.name = name; 19 this.age = age; 20 } 21 public String getName() { 22 return name; 23 } 24 public void setName(String name) { 25 this.name = name; 26 } 27 public int getAge() { 28 return age; 29 } 30 public void setAge(int age) { 31 this.age = age; 32 } 33 } 1 public class ObjectStreamDemo {2 /**3 * @param args4 * @throws IOException 5 * @throws ClassNotFoundException 6 */7 public static void main(String[] args) throws IOException, ClassNotFoundException {8 //writeObj();9 readObj(); 10 } 11 public static void readObj() throws IOException, ClassNotFoundException { 12 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object")); 13 //對象的反序列化。 14 Person p = (Person)ois.readObject(); 15 System.out.println(p.getName()+":"+p.getAge()); 16 ois.close(); 17 } 18 19 public static void writeObj() throws IOException, IOException { 20 21 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object")); 22 //對象序列化。 被序列化的對象必須實現Serializable接口。 23 oos.writeObject(new Person("小強",30)); 24 oos.close(); 25 } 26 }

序列號的作用:舉個例子,當你一開始對這個person類進行序列化的時候用的是private類型序列化的,但是你在反序列化之前,把這個private改成了public.這樣反序列化讀取的時候就會報出異常.

Exception in thread "main" java.io.InvalidClassException: cn.itcast.serializable.Person; local class incompatible: stream classdesc serialVersionUID = 9527, local class serialVersionUID = 7915096815468332737

?

就是關于前后這個Person類的版本號不統一.如果加上設定一個版本號,那么經過上面的修改也是可以反序列化的.

?

@throws?ClassNotFoundException

如果只有obj.object 這個文件能不能把其中的對象Person取出來,因為任何對象在堆內存中創建都必須依賴于該對象所屬的類文件(class文件),如果僅僅給了obj.object,這個里面有Person對象的字節碼,可是取出的時候你內存中并沒有Person.class文件,沒有,所以取不出來,所以必須要有obj.object文件和Person.class文件.(所以有一個ClassNotFound異常)

?

類 ObjectInputStream

ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基本數據和對象進行反序列化。

這句話的意思就是ObjectInputStream只能讀取ObjectOutputStream的.

ObjectOutputStream 和 ObjectInputStream 分別與 FileOutputStream 和 FileInputStream 一起使用時,可以為應用程序提供對對象圖形的持久存儲。

?

序列化就是按照順序排列

Serializable就是一個標記,(要想實現序列化必須有這個標記)

對象的默認序列化機制寫入的內容是:對象的類,類簽名,以及非瞬態和非靜態字段的值。(因為靜態static的東西在方法區.)

?

使用時候:對某些特點的對象,比如數據庫連接對象,存儲特定數據的對象 ,這樣對象你不想創建他們,想存儲起來,讓他們的生命周期延長,可以把他們放在硬盤當中.每次系統啟動的時候都到.object中讀取對象和里面的數據,這個時候就可以把他們序列化來完成.

僅僅是把對象從堆內存存儲到了硬盤上.

?

接口 Serializable

序列化運行時使用一個稱為 serialVersionUID 的版本號與每個可序列化類相關聯. 該序列號在反序列化過程中用于驗證序列化對象的發送者和接收者是否為該對象加載了與序列化兼容的類。(當一個對象進行序列化的時候,給該類分配一個id號.這個id號可以用來驗證.你給給我的文件存儲的對象和你給我的類到底是不是同一版本的啊….)

?

這個ID號是根據類的特征和類的簽名算出來的.為什么ID號那么長,是因為為了避免重復.

所以Serializable是給類加上id用的. 用于判斷類和對象是否是同一個版本。

?

如果可序列化類未顯式聲明 serialVersionUID,則序列化運行時將基于該類的各個方面計算該類的默認 serialVersionUID 值. 原因是計算默認的 serialVersionUID 對類的詳細信息具有較高的敏感性,根據編譯器實現的不同可能千差萬別,這樣在反序列化過程中可能會導致意外的?InvalidClassException。

?

在學web的時候一些類就需要實現序列化接口,因為服務器就會對你的對象進行臨時本地存儲.它怕服務器崩了的以后,你的會話都被消失了.所以存儲在了硬盤上,你重新啟動服務器會恢復之前的會話,恢復對象,你之前運行的東西都在.

//====================================================================

具體示例可以看我的如下博文(轉載+總結):

http://www.cnblogs.com/DreamDrive/p/5412931.html

轉載于:https://www.cnblogs.com/writeLessDoMore/p/6733449.html

總結

以上是生活随笔為你收集整理的Java序列化接口的作用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色淫湿视频| 色大师在线观看 | 人人爱人人澡 | 亚洲91色| 国产无码久久精品 | 欧美精品手机在线 | 国产清纯白嫩初高中在线观看性色 | 91亚洲一区| 午夜在线观看视频 | 美女毛片视频 | 久久久久久久久久久国产精品 | 丁香婷婷网 | 久久精品国产亚洲AV熟女 | 99小视频 | 国产区视频在线 | 伊人网亚洲 | 免费毛片一区二区三区久久久 | 人妻体内射精一区二区三区 | 亚洲av永久中文无码精品综合 | 精品人妻一区二区三区日产 | 99热r| 亚洲永久| 国产成人高清 | 免费看a | 台湾a级片 | 韩国毛片视频 | 玖玖999| 欧美成人精品欧美一 | 日韩中文字幕在线免费观看 | 日韩福利电影在线 | 99精品欧美一区二区三区 | 欧美综合久久 | 福利视频不卡 | 色婷婷久久 | 免费小视频| 在线观看va | 日韩精品成人免费观看视频 | 免费吃奶摸下激烈视频 | 国产精品主播在线 | 中文字幕一区二区三区人妻四季 | 成人国产免费视频 | 污的网站| 日韩精品中文在线 | 岛国av毛片 | 银娇在线观看 | 欧美天堂 | 成人黄色动漫在线观看 | 美女网站免费观看视频 | 日本大乳美女 | 中文字幕日本一区二区 | 污网站免费看 | 久久精品亚洲a | 蜜臀在线观看 | 爱爱网站免费 | 在线h片 | 午夜寂寞视频 | 99riav国产精品| 日韩在线视频免费 | 国产精品久久婷婷 | 国产精品香蕉国产 | 婷婷丁香花五月天 | gv天堂gv无码男同在线观看 | 日本超碰 | 牛牛精品一区二区 | 中文字幕精品在线 | 免费三片60分钟 | 欧美日韩一区二区区别是什么 | 91在线视频导航 | 一区二区三区黄色录像 | 午夜免费福利 | 中文字幕一区二区久久人妻网站 | 91九色pron| 日韩淫视频 | 欧美 亚洲 激情 一区 | av中文字幕亚洲 | 成人久久影院 | 日狠狠 | 日本一级网站 | 爆操91| 无码人妻丰满熟妇精品 | 亚洲资源在线观看 | 色综综| 91欧美视频| 国产精品乱码 | 亚洲午夜久久 | 国产99久久久国产精品 | 一区二区免费av | 免费人成在线 | 婷婷成人综合网 | 天堂网a | 亚洲日本一区二区 | 九九在线免费视频 | 日本精品久久久久 | 成人黄色激情网 | 好爽快一点高潮了 | 夜夜嗨国产 | 加勒比一区在线 | 欧美一区二区三区系列电影 | 9色av|