亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語(yǔ)言

java序列化的方法

時(shí)間:2024-10-06 21:41:55 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

java序列化的方法

  java提供了一種對(duì)象序列化的機(jī)制,該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括該對(duì)象的數(shù)據(jù)、有關(guān)對(duì)象的類型的信息和存儲(chǔ)在對(duì)象中數(shù)據(jù)的類型。下面是小編為大家搜索整理的java序列化的方法,希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  簡(jiǎn)介

  將序列化對(duì)象寫入文件之后,可以從文件中讀取出來(lái),并且對(duì)它進(jìn)行反序列化,也就是說(shuō),對(duì)象的類型信息、對(duì)象的數(shù)據(jù),還有對(duì)象中的數(shù)據(jù)類型可以用來(lái)在內(nèi)存中新建對(duì)象。

  整個(gè)過(guò)程都是Java虛擬機(jī)(JVM)獨(dú)立的,也就是說(shuō),在一個(gè)平臺(tái)上序列化的對(duì)象可以在另一個(gè)完全不同的平臺(tái)上反序列化該對(duì)象。

  類ObjectInputStream 和ObjectOutputStream是高層次的數(shù)據(jù)流,它們包含序列化和反序列化對(duì)象的方法。

  ObjectOutputStream 類包含很多寫方法來(lái)寫各種數(shù)據(jù)類型,但是一個(gè)特別的方法例外:

  public final void writeObject(Object x) throws IOException

  上面的方法序列化一個(gè)對(duì)象,并將它發(fā)送到輸出流。相似的ObjectInputStream 類包含如下反序列化一個(gè)對(duì)象的方法:

  public final Object readObject() throws IOException, ClassNotFoundException

  該方法從流中取出下一個(gè)對(duì)象,并將對(duì)象反序列化。它的返回值為Object,因此,你需要將它轉(zhuǎn)換成合適的數(shù)據(jù)類型。

  演示序列化

  為了演示序列化在Java中是怎樣工作的,我將使用之前教程中提到的Employee類,假設(shè)我們定義了如下的Employee類,該類實(shí)現(xiàn)了Serializable 接口。

  public class Employee implements java.io.Serializable{ public String name; public String address; public transient int SSN; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); }}

  請(qǐng)注意,一個(gè)類的對(duì)象要想序列化成功,必須滿足兩個(gè)條件:

  該類必須實(shí)現(xiàn) java.io.Serializable 對(duì)象。

  該類的所有屬性必須是可序列化的。如果有一個(gè)屬性不是可序列化的,則該屬性必須注明是短暫的。

  如果你想知道一個(gè)Java標(biāo)準(zhǔn)類是否是可序列化的,請(qǐng)查看該類的文檔。檢驗(yàn)一個(gè)類的實(shí)例是否能序列化十分簡(jiǎn)單, 只需要查看該類有沒(méi)有實(shí)現(xiàn)java.io.Serializable接口。

  【相關(guān)閱讀】

  什么是java多態(tài)

  簡(jiǎn)介

  多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

  多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn)。

  比如我們說(shuō)"寵物"這個(gè)對(duì)象,它就有很多不同的`表達(dá)或?qū)崿F(xiàn),比如有小貓、小狗、蜥蜴等等。那么我到寵物店說(shuō)"請(qǐng)給我一只寵物",服務(wù)員給我小貓、小狗或者蜥蜴都可以,我們就說(shuō)"寵物"這個(gè)對(duì)象就具備多態(tài)性。

  接下來(lái)讓我們通過(guò)實(shí)例來(lái)了解Java的多態(tài)。

  例子

  public interface Vegetarian{}public class Animal{}public class Deer extends Animal implements Vegetarian{}

  因?yàn)镈eer類具有多重繼承,所以它具有多態(tài)性。以上實(shí)例解析如下:

  一個(gè) Deer IS-A(是一個(gè)) Animal

  一個(gè) Deer IS-A(是一個(gè)) Vegetarian

  一個(gè) Deer IS-A(是一個(gè)) Deer

  一個(gè) Deer IS-A(是一個(gè))Object

  在Java中,所有的對(duì)象都具有多態(tài)性,因?yàn)槿魏螌?duì)象都能通過(guò)IS-A測(cè)試的類型和Object類。

  訪問(wèn)一個(gè)對(duì)象的唯一方法就是通過(guò)引用型變量。

  引用型變量只能有一種類型,一旦被聲明,引用型變量的類型就不能被改變了。

  引用型變量不僅能夠被重置為其他對(duì)象,前提是這些對(duì)象沒(méi)有被聲明為final。還可以引用和它類型相同的或者相兼容的對(duì)象。它可以聲明為類類型或者接口類型。

  當(dāng)我們將引用型變量應(yīng)用于Deer對(duì)象的引用時(shí),下面的聲明是合法的:

  Deer d = new Deer();Animal a = d;Vegetarian v = d;Object o = d;

  所有的引用型變量d,a,v,o都指向堆中相同的Deer對(duì)象。

【java序列化的方法】相關(guān)文章:

java序列化對(duì)象的技巧09-30

java反序列化對(duì)象的技巧08-29

如何理解Java對(duì)象的序列化09-26

java泛型方法10-22

java文檔注釋的方法08-22

java顯示圖片的方法09-26

java的常見排序方法08-31

使用Java的枚舉類型的方法10-19

java parseInt解釋加方法08-08

java性能調(diào)優(yōu)的方法09-26