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

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

package com.bird.thinking; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Date; /** * @use transient关键字实现对指定变量的非序列化 * @author Bird * */ public class Login implements Serializable{ private Date date = new Date(); private String username; private transient String password;//注意transient关键字的运用 public Login(String name, String pwd){ username = name; password = pwd; } public String toString(){ return "Login info: \n username: " + username + "\n date: " + date + "\n password " + password; } public static void main(String [] args) throws Exception{ Login a = new Login("Bird", "Hehe"); System.out.println("Login a = a" + a); ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("d://login.out")); o.writeObject(a); o.close(); Thread.sleep(500); //Now Get Back ObjectInputStream in = new ObjectInputStream(new FileInputStream("d://login.out")); System.out.println("recovering object at " + new Date()); a = (Login)in.readObject(); System.out.println("Login a = " + a); } }


运行结果为

Login a = aLogin info: username: Bird date: Sun Oct 23 15:38:51 CST 2011 password Hehe recovering object at Sun Oct 23 15:38:52 CST 2011 Login a = Login info: username: Bird date: Sun Oct 23 15:38:51 CST 2011 password null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值