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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 互助| 资兴市| 周口市| 安义县| 师宗县| 新密市| 濮阳县| 长春市| 来宾市| 陈巴尔虎旗| 屏山县| 太原市| 武夷山市| 香港 | 门源| 军事| 柞水县| 磴口县| 新丰县| 丁青县| 周至县| 左贡县| 南皮县| 孟村| 体育| 师宗县| 汝阳县| 太康县| 武平县| 永泰县| 苏尼特左旗| 金湖县| 化隆| 宾阳县| 扬中市| 留坝县| 兖州市| 永清县| 新野县| 永宁县| 德安县|