Java中Transient关键字在对象序列化中的作用

在对象序列化的时候,有些变量比如密码等等,你需希望他去序列化,否则别人就可以通过字节流来回复数据得到你的private的数据,这样是一个很危险的问题,下面使用关键字Transient 来解决这个问题,他的意思就是不需要虚拟机去序列化这个变量,我会自己去处理

  1. package com.bird.thinking;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.Serializable;
  9. import java.util.Date;
  10. /**
  11.  * @use  transient关键字实现对指定变量的非序列化
  12.  * @author Bird
  13.  *
  14.  */
  15. public class Login implements Serializable{
  16.     private Date date = new Date();
  17.     private String username;
  18.     private transient String password;//注意transient关键字的运用
  19.     public Login(String name, String pwd){
  20.         username = name;
  21.         password = pwd;
  22.     }
  23.     public String toString(){
  24.         return "Login info: \n    username:  " + username + "\n date:  " + date +  "\n  password " + password;
  25.     }
  26.     public static void main(String [] args) throws Exception{
  27.         Login a = new Login("Bird", "Hehe");
  28.         System.out.println("Login a = a" + a);
  29.         ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("d://login.out"));
  30.         o.writeObject(a);
  31.         o.close();
  32.         Thread.sleep(500);
  33.         //Now  Get Back
  34.         ObjectInputStream in = new ObjectInputStream(new FileInputStream("d://login.out"));
  35.         System.out.println("recovering  object  at "  + new Date());
  36.         a = (Login)in.readObject();
  37.         System.out.println("Login a = " + a);
  38.     }
  39. }

 

 

 

运行结果为

 

  1. Login a = aLogin info:
  2. username:  Bird
  3. date:  Sun Oct 23 15:38:51 CST 2011
  4. password Hehe
  5. recovering  object  at Sun Oct 23 15:38:52 CST 2011
  6. Login a = Login info:
  7. username:  Bird
  8. date:  Sun Oct 23 15:38:51 CST 2011
  9. password null

 
转自:http://blog.csdn.net/a352193394/article/details/6898241

标签: JAVA, Transient, 对象序列化

添加新评论