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: MIKE
17             *    logging date : Mon Sep 29 09:40:29 CST 2014
18             *    password: MECHANICS
19          */
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为null
45                  */
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: MIKE
59          * logging date : Mon Sep 29 09:40:29 CST 2014
60          * password: NOT SET
61          * 
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 }

 

posted @ 2014-09-29 09:56  soul390  阅读(217)  评论(0编辑  收藏  举报