首页 > 代码库 > transient用法

transient用法

 1 import java.io.FileInputStream; 2 import java.io.FileNotFoundException; 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.ObjectInputStream; 6 import java.io.ObjectOutputStream; 7 import java.io.Serializable; 8 import java.util.Date; 9 10 public class Main {11     public static void main(String[] args) {12         LoggingInfo logInfo = new LoggingInfo("MIKE", "MECHANICS");   13         System.out.println(logInfo.toString());14         /*15          * logon info: 16             *    user: MIKE17             *    logging date : Mon Sep 29 09:40:29 CST 201418             *    password: MECHANICS19          */20         ObjectOutputStream o;21         try {22             o = new ObjectOutputStream(   23                     new FileOutputStream("logInfo.out"));24             /* 将对象序列化保存到磁盘中 */25             o.writeObject(logInfo);   26             o.close();27         } catch (FileNotFoundException e) {28             e.printStackTrace();29         } catch (IOException e) {30             e.printStackTrace();31         }   32         33         34         ObjectInputStream in;35         try {36             in = new ObjectInputStream(   37                     new FileInputStream("logInfo.out"));38             LoggingInfo logInfo1;39             try {40                 /* 从磁盘中读回对象 */41                 logInfo1 = (LoggingInfo)in.readObject();42                 43                 /*44                  * 由于pwd变量没有被序列化,所以读出对象中pwd为null45                  */46                 System.out.println(logInfo1.toString()); 47             } catch (ClassNotFoundException e) {48                 e.printStackTrace();49             }   50             51         } catch (FileNotFoundException e) {52             e.printStackTrace();53         } catch (IOException e) {54             e.printStackTrace();55         }   56         /*57          * logon info: 58          * user: MIKE59          * logging date : Mon Sep 29 09:40:29 CST 201460          * password: NOT SET61          * 62          */63     }64 }65 class LoggingInfo implements Serializable{66     67     private Date loggingDate = new Date();68     private String uid;69     /* 用tranisent 修饰一个变量,当类的对象被序列化时,此变量的值将不被序列化 */70     private transient String pwd;71     72     LoggingInfo(String uid, String pwd){73         this.uid = uid;74         this.pwd = pwd;75     }76     77     public String toString(){78          String password=null;   79             if(pwd == null){   80             password = "NOT SET";   81             }   82             else  {   83                 password = pwd;   84             }   85             return "logon info: \n   " + "user: " + uid +   86                 "\n   logging date : " + loggingDate.toString() +   87                 "\n   password: " + password;   88     }89 }

 

transient用法