JavaBean涉及的兩個重要類
JavaBean對象和所有的對象一樣,就其本質來說是動態變化的,若想使JavaBean對象在網絡移動或把對象保存到永久介質中,必須把對象序列化(Serialization)。對象序列化把對象的特徵值按一定的順序線性化排列。人們經常看到“持久性”一詞與“序列化“聯繫在一起,持久性(Persistence)是指使對象在硬盤上永久保存,對象的持久性是通過對象序列化來實現。反之。由序列化的對象的特徵值重新構造該對象叫反序列化。一個對象從一個網絡結點傳送到另一個結點,對象在發送的結點上需序列化,在接收對象的結點上需反序列化。
1. Serializable接口
Java提供了支持對象序列化的類和接口在java.io包中,Serializable接口是訪問和運行持久性對象的最快的方式,若一個類對象要成爲序列化性對象,該對象類只需實現Serializable接口,就可以了。Serializable接口標識着一個對象是可序列化。在大多數情況下,要使一個類對象序列化,只需要簡單的在類聲明中加入“implements Serializable”就可以了。例如
public class abc implements Serializable
{//……}
每一個JavaBean都應該是可序列化的,這就意味着,在大多數情況下需實現Serializable接口。下圖3-5說明了如何保存對象的標識和其特徵值信息。保存的對象是例3-1的JavaBeanExaml類的對象javaBeanExam1。
JavaBean對象和所有的對象一樣,就其本質來說是動態變化的,若想使JavaBean對象在網絡移動或把對象保存到永久介質中,必須把對象序列化(Serialization)。對象序列化把對象的特徵值按一定的順序線性化排列。人們經常看到“持久性”一詞與“序列化“聯繫在一起,持久性(Persistence)是指使對象在硬盤上永久保存,對象的持久性是通過對象序列化來實現。反之。由序列化的對象的特徵值重新構造該對象叫反序列化。一個對象從一個網絡結點傳送到另一個結點,對象在發送的結點上需序列化,在接收對象的結點上需反序列化。
1. Serializable接口
Java提供了支持對象序列化的類和接口在java.io包中,Serializable接口是訪問和運行持久性對象的最快的方式,若一個類對象要成爲序列化性對象,該對象類只需實現Serializable接口,就可以了。Serializable接口標識着一個對象是可序列化。在大多數情況下,要使一個類對象序列化,只需要簡單的在類聲明中加入“implements Serializable”就可以了。例如
public class abc implements Serializable
{//……}
每一個JavaBean都應該是可序列化的,這就意味着,在大多數情況下需實現Serializable接口。下圖3-5說明了如何保存對象的標識和其特徵值信息。保存的對象是例3-1的JavaBeanExaml類的對象javaBeanExam1。
2. ObjectInputStream和ObjectOutputStream類
java.io包中提供了幾個類,它們實現了對象輸入輸出接口,如ObjectInputStream和ObjectOutputStream類,下面我們舉例說明這兩個類如何對持久性對象進行操作的。
例3-7 利用ObjectOutputStream將例4-1中定義的的JavaBeanExaml類的對象寫入到文件去。
例3-8 將例3-7寫入的對象讀出來。這是序列化的逆過程。
最後程序運行,輸出的結果是 5 ,這說明讀入的對象所保存的特徵值,的確在保存前設置的整數值 5。
java的序列化機制爲把對象輸入輸出帶來方便。在上面的例子中,JavaBeanExaml對象不必知道如何將自己寫入一個文件中,只需要簡單的實現Serializable接口,Java就會將所有的JavaBeanExaml bean的對象特徵記錄下來。