Serializable與transient的聯合使用:動態管理成員屬性——《Thinking in Java》隨筆033

來源:互聯網
上載者:User

標籤:tostring   屬性   catch   new   array   try   auth   pack   otf   

 1 //: SerialCtl.java 2 // 下面這個Demo示範如何使用Serializable和transient關鍵字來動態管理成員屬性 3 // 主要思想是添加(不是複寫與實現)write與read的方法(注意方法簽名) 4  5 package c10; 6  7 import java.io.ByteArrayInputStream; 8 import java.io.ByteArrayOutputStream; 9 import java.io.IOException;10 import java.io.ObjectInputStream;11 import java.io.ObjectOutputStream;12 import java.io.Serializable;13 14 /**15 *    @time:         上午10:01:5316 *    @date:         2017年5月11日17 *    @auther:    skyfffire18 *    @version:    v0.119 */20 public class SerialCtl implements Serializable {21     private static final long serialVersionUID = -7532371062424412783L;22 23     String a = null;24     transient String b = null;25     26     public SerialCtl(String aa, String bb) {27         a = "Not Transient: " + aa;28         b = "Transient: " + bb;29     }30     31     public String toString() {32         return a + "\n" + b;33     }34     35     private void writeObject(ObjectOutputStream stream) 36             throws IOException {37         stream.defaultWriteObject();38         stream.writeObject(b);39     }40     41     private void readObject(ObjectInputStream stream) 42             throws IOException, ClassNotFoundException {43         stream.defaultReadObject();44         b = (String) stream.readObject();45     }46     47     public static void main(String[] args) {48         SerialCtl sc = new SerialCtl("Test1", "Test2");49         50         System.out.println("Before:\n" + sc);51         52         ByteArrayOutputStream buf = 53                 new ByteArrayOutputStream();54 55         try {56             ObjectOutputStream o = new ObjectOutputStream(buf);57             o.writeObject(sc);58             o.close();59             60             ObjectInputStream in = 61                     new ObjectInputStream(62                             new ByteArrayInputStream(buf.toByteArray()));63             sc = (SerialCtl) in.readObject();64             in.close();65             System.out.println(sc);66         } catch (Exception e) {67             e.printStackTrace();68         }69     }70 }71 72 ///:~

 

Serializable與transient的聯合使用:動態管理成員屬性——《Thinking in Java》隨筆033

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.