最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java序列化中子類、父類構(gòu)造函數(shù)問題實(shí)例分析

 更新時(shí)間:2019年09月09日 12:00:18   作者:cakincqm  
這篇文章主要介紹了Java序列化中子類、父類構(gòu)造函數(shù)問題,結(jié)合實(shí)例形式分析了java父類與子類構(gòu)造函數(shù)中序列化接口調(diào)用相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java序列化中子類、父類構(gòu)造函數(shù)問題。分享給大家供大家參考,具體如下:

一 介紹

1、如果父類實(shí)現(xiàn)了序列化接口,子類就不需要實(shí)現(xiàn)序列化接口。

2、創(chuàng)建對象的時(shí)候,遞歸調(diào)用了父類的構(gòu)造函數(shù)。

3、對子類對象進(jìn)行反序列化操作時(shí),如果其父類沒有實(shí)現(xiàn)序列化接口,那么其父類的構(gòu)造函數(shù)會被調(diào)用,否則不會被調(diào)用。

二 實(shí)例

package com.imooc.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ObjectSeriaDemo2 {
  public static void main(String[] args) throws Exception{
     ObjectOutputStream oos = new ObjectOutputStream(
         new FileOutputStream("demo/obj1.dat"));
     Foo2 foo1 = new Foo2();  //創(chuàng)建對象的時(shí)候,遞歸調(diào)用了父類的構(gòu)造函數(shù)
     oos.writeObject(foo1);
     oos.flush();
     oos.close();
     //反序列化是否遞歸調(diào)用父類的構(gòu)造函數(shù),不能證明
     ObjectInputStream ois = new ObjectInputStream(
         new FileInputStream("demo/obj1.dat"));
     Foo2 foo2 = (Foo2)ois.readObject();
     System.out.println(foo2);
     ois.close();
     ObjectOutputStream oos1 = new ObjectOutputStream(
         new FileOutputStream("demo/obj1.dat"));
     Bar2 bar1 = new Bar2();
     oos1.writeObject(bar1);
     oos1.flush();
     oos1.close();
     ObjectInputStream ois1 = new ObjectInputStream(
         new FileInputStream("demo/obj1.dat"));
     Bar2 bar2 = (Bar2)ois1.readObject();
     System.out.println(bar2);
     ois1.close();
     /*
     * 對子類對象進(jìn)行反序列化操作時(shí),
     * 如果其父類沒有實(shí)現(xiàn)序列化接口
     * 那么其父類的構(gòu)造函數(shù)會被調(diào)用
     */
  }
}
/*
 *  一個(gè)類實(shí)現(xiàn)了序列化接口,那么其子類都可以進(jìn)行序列化
 */
class Foo implements Serializable{
  public Foo(){
     System.out.println("foo...");
  }
}
class Foo1 extends Foo{
  public Foo1(){
     System.out.println("foo1...");
  }
}
class Foo2 extends Foo1{
  public Foo2(){
     System.out.println("foo2...");
  }
}
class Bar{
  public Bar(){
     System.out.println("bar");
  }
}
class Bar1 extends Bar{
  public Bar1(){
     System.out.println("bar1..");
  }
}
class Bar2 extends Bar1 implements Serializable{
  public Bar2(){
     System.out.println("bar2...");
  }
}

三 運(yùn)行結(jié)果

foo...
foo1...
foo2...
com.imooc.io.Foo2@913fe2
bar
bar1..
bar2...
bar
bar1..
com.imooc.io.Bar2@eb7859

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 必須了解的高階JAVA枚舉特性!

    必須了解的高階JAVA枚舉特性!

    這篇文章主要介紹了必須了解的高階JAVA枚舉特性!幫助大家更好的理解和學(xué)習(xí)Java枚舉的相關(guān)知識,感興趣的朋友可以了解下
    2021-01-01
  • Java8 Lambda和Invokedynamic詳情

    Java8 Lambda和Invokedynamic詳情

    關(guān)于Java8的Lambda 我們可以將lambda表達(dá)式與新的Streams API結(jié)合起來,以表達(dá)豐富的數(shù)據(jù)處理查詢,下面文章小編就列舉簡單的例子給大家介說吧,感興趣的小伙伴可以參考下面文章的具體內(nèi)容奧
    2021-09-09
  • Spring中的NamespaceHandler加載過程源碼詳解

    Spring中的NamespaceHandler加載過程源碼詳解

    這篇文章主要介紹了Spring中的NamespaceHandler加載過程源碼詳解,Spring提供的NamespaceHandler的處理機(jī)制,簡單來說就是命名空間處理器,Spring為了開放性提供了NamespaceHandler機(jī)制,這樣我們就可以根據(jù)需求自己來處理我們設(shè)置的標(biāo)簽元素,需要的朋友可以參考下
    2024-02-02
  • Spring?Boot項(xiàng)目集成Knife4j接口文檔的實(shí)例代碼

    Spring?Boot項(xiàng)目集成Knife4j接口文檔的實(shí)例代碼

    Knife4j就相當(dāng)于是swagger的升級版,對于我來說,它比swagger要好用得多<BR>,這篇文章主要介紹了Spring?Boot項(xiàng)目集成Knife4j接口文檔的示例代碼,需要的朋友可以參考下
    2021-12-12
  • 解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題

    解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題

    這篇文章主要介紹了解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析

    Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析

    這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java中的ArrayList容量及擴(kuò)容方式

    Java中的ArrayList容量及擴(kuò)容方式

    這篇文章主要介紹了Java中的ArrayList容量及擴(kuò)容方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)

    SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了springMVC實(shí)現(xiàn)文件上傳和下載的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 淺談Spring中的循環(huán)依賴問題與解決方案

    淺談Spring中的循環(huán)依賴問題與解決方案

    這篇文章主要介紹了淺談Spring中的循環(huán)依賴問題與解決方案,循環(huán)依賴就是兩個(gè)或則兩個(gè)以上的bean互相持有對方,最終形成閉環(huán),比如A依賴于B,B依賴于C,C又依賴于A,需要的朋友可以參考下
    2023-12-12
  • Spring的Bean注入解析結(jié)果BeanDefinition詳解

    Spring的Bean注入解析結(jié)果BeanDefinition詳解

    這篇文章主要介紹了Spring的Bean注入解析結(jié)果BeanDefinition詳解,BeanDefinition描述了一個(gè)bean實(shí)例,擁有屬性值、構(gòu)造參數(shù)值和具體實(shí)現(xiàn)的其他信息,其是一個(gè)bean的元數(shù)據(jù),xml中配置的bean元素會被解析成BeanDefinition對象,需要的朋友可以參考下
    2023-12-12

最新評論

青浦区| 盱眙县| 虞城县| 安泽县| 抚州市| 岳阳市| 万安县| 米脂县| 育儿| 通江县| 宁远县| 满洲里市| 原阳县| 广州市| 五原县| 临洮县| 泸定县| 宁海县| 孝昌县| 沙湾县| 安远县| 兴海县| 三门峡市| 东港市| 永定县| 祁阳县| 凤翔县| 柏乡县| 曲沃县| 文登市| 成武县| 建阳市| 凯里市| 托里县| 贵定县| 旬阳县| 名山县| 象州县| 闽清县| 卢氏县| 四子王旗|