readResolve()方法如何在java項(xiàng)目中使用-創(chuàng)新互聯(lián)

本篇文章為大家展示了readResolve()方法如何在java項(xiàng)目中使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都成都工商代辦小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站定制營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺(jué)設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

    readResolve方法是作用是什么?這個(gè)方法跟對(duì)象的序列化相關(guān)(這樣倒是解釋了為什么 readResolve方法是private修飾的)。 怎么跟對(duì)象的序列化相關(guān)了?

       下面我們先簡(jiǎn)要地回顧下對(duì)象的序列化。一般來(lái)說(shuō),一個(gè)類實(shí)現(xiàn)了 Serializable接口,我們就可以把它往內(nèi)存地寫再?gòu)膬?nèi)存里讀出而"組裝"成一個(gè)跟原來(lái)一模一樣的對(duì)象。不過(guò)當(dāng)序列化遇到單例時(shí),里邊就有了個(gè)問(wèn)題:從內(nèi)存讀出而組裝的對(duì)象破壞了單例的規(guī)則。單例是要求一個(gè)JVM中只有一個(gè)類對(duì)象的,而現(xiàn)在通過(guò)反序列,一個(gè)新的對(duì)象克隆了出來(lái)。如下例所示:

  Java代碼:

public final class MySingleton implements Serializable { 
   private MySingleton() { } 
   private static final MySingleton INSTANCE = new MySingleton(); 
   public static MySingleton getInstance() { return INSTANCE; } 
}

       當(dāng)把 MySingleton對(duì)象(通過(guò)getInstance方法獲得的那個(gè)單例對(duì)象)序列化后再?gòu)膬?nèi)存中讀出時(shí),就有一個(gè)全新但跟原來(lái)一樣的MySingleton對(duì)象存在了。那怎么來(lái)維護(hù)單例模式呢?這就要用到readResolve方法。 如下所示: 

public final class MySingleton implements Serializable{ 
  private MySingleton() { } 
  private static final MySingleton INSTANCE = new MySingleton(); 
  public static MySingleton getInstance() { return INSTANCE; } 
  private Object readResolve() throws ObjectStreamException { 
    // instead of the object we're on, 
    // return the class variable INSTANCE 
   return INSTANCE; 
  } 
}

           這樣,當(dāng)JVM從內(nèi)存中反序列化地"組裝"一個(gè)新對(duì)象時(shí),就會(huì)自動(dòng)調(diào)用這個(gè) readResolve方法來(lái)返回我們指定好的對(duì)象了,單例規(guī)則也就得到了保證。

上述內(nèi)容就是readResolve()方法如何在java項(xiàng)目中使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:readResolve()方法如何在java項(xiàng)目中使用-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://www.muchs.cn/article22/dgiscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷云服務(wù)器、服務(wù)器托管關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司