qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java transient關鍵字使用小記

             3. transient使用細節——被transient關鍵字修飾的變量真的不能被序列化嗎?
            思考下面的例子:
          import java.io.Externalizable;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.ObjectInput;
          import java.io.ObjectInputStream;
          import java.io.ObjectOutput;
          import java.io.ObjectOutputStream;
          /**
          * @descripiton Externalizable接口的使用
          *
          * @author Alexia
          * @date 2013-10-15
          *
          */
          public class ExternalizableTest implements Externalizable {
          private transient String content = "是的,我將會被序列化,不管我是否被transient關鍵字修飾";
          @Override
          public void writeExternal(ObjectOutput out) throws IOException {
          out.writeObject(content);
          }
          @Override
          public void readExternal(ObjectInput in) throws IOException,
          ClassNotFoundException {
          content = (String) in.readObject();
          }
          public static void main(String[] args) throws Exception {
          ExternalizableTest et = new ExternalizableTest();
          ObjectOutput out = new ObjectOutputStream(new FileOutputStream(
          new File("test")));
          out.writeObject(et);
          ObjectInput in = new ObjectInputStream(new FileInputStream(new File(
          "test")));
          et = (ExternalizableTest) in.readObject();
          System.out.println(et.content);
          out.close();
          in.close();
          }
          }
            content變量會被序列化嗎?好吧,我把答案都輸出來了,是的,運行結果就是:
            是的,我將會被序列化,不管我是否被transient關鍵字修飾
            這是為什么呢,不是說類的變量被transient關鍵字修飾以后將不能序列化了嗎?
            我們知道在Java中,對象的序列化可以通過實現兩種接口來實現,若實現的是Serializable接口,則所有的序列化將會自動進行,若實現的是Externalizable接口,則沒有任何東西可以自動序列化,需要在writeExternal方法中進行手工指定所要序列化的變量,這與是否被transient修飾無關。因此第二個例子輸出的是變量content初始化的內容,而不是null。
           3. transient使用細節——被transient關鍵字修飾的變量真的不能被序列化嗎?
            思考下面的例子:
          import java.io.Externalizable;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.ObjectInput;
          import java.io.ObjectInputStream;
          import java.io.ObjectOutput;
          import java.io.ObjectOutputStream;
          /**
          * @descripiton Externalizable接口的使用
          *
          * @author Alexia
          * @date 2013-10-15
          *
          */
          public class ExternalizableTest implements Externalizable {
          private transient String content = "是的,我將會被序列化,不管我是否被transient關鍵字修飾";
          @Override
          public void writeExternal(ObjectOutput out) throws IOException {
          out.writeObject(content);
          }
          @Override
          public void readExternal(ObjectInput in) throws IOException,
          ClassNotFoundException {
          content = (String) in.readObject();
          }
          public static void main(String[] args) throws Exception {
          ExternalizableTest et = new ExternalizableTest();
          ObjectOutput out = new ObjectOutputStream(new FileOutputStream(
          new File("test")));
          out.writeObject(et);
          ObjectInput in = new ObjectInputStream(new FileInputStream(new File(
          "test")));
          et = (ExternalizableTest) in.readObject();
          System.out.println(et.content);
          out.close();
          in.close();
          }
          }
            content變量會被序列化嗎?好吧,我把答案都輸出來了,是的,運行結果就是:
            是的,我將會被序列化,不管我是否被transient關鍵字修飾
            這是為什么呢,不是說類的變量被transient關鍵字修飾以后將不能序列化了嗎?
            我們知道在Java中,對象的序列化可以通過實現兩種接口來實現,若實現的是Serializable接口,則所有的序列化將會自動進行,若實現的是Externalizable接口,則沒有任何東西可以自動序列化,需要在writeExternal方法中進行手工指定所要序列化的變量,這與是否被transient修飾無關。因此第二個例子輸出的是變量content初始化的內容,而不是null。

          posted on 2014-06-12 13:06 順其自然EVO 閱讀(206) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南充市| 柳江县| 汉寿县| 柯坪县| 梁平县| 娄烦县| 丰顺县| 昂仁县| 阜宁县| 宝兴县| 全州县| 海阳市| 卢氏县| 临湘市| 文登市| 象州县| 嘉定区| 阜康市| 岳阳县| 安国市| 沿河| 金门县| 蚌埠市| 调兵山市| 手机| 巫溪县| 宁晋县| 万山特区| 东海县| 沙坪坝区| 苍梧县| 西和县| 济南市| 石阡县| 博乐市| 延安市| 台中县| 晋江市| 永福县| 宝清县| 临海市|