浏览 7335 次
锁定老帖子 主题:新手看到java中的transient
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-18
引用 最近一段时间想把集合部分复习下,上午没事情做,读读jdk自带的src,看ArrayList类时,第二条语句难倒了我!
private transient Object[] elementData;transient关键字是什么意思啊!学java零零散散也有1年了,真是孤陋寡闻啊…… 看看下面的例子,一个登陆时,密码与ID,密码最后没打印,就会明白transient 是干什么了。 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Date; public class LoggingInfo implements java.io.Serializable { private static final long serialVersionUID = 1L; private Date loggingDate = new Date(); private String uid; private transient String pwd; LoggingInfo(String user, String password) { uid = user; pwd = password; } public String toString() { String password = null; if (pwd == null) { password = "NOT SET"; } else { password = pwd; } return "logon info: \n " + "user: " + uid + "\n logging date : " + loggingDate.toString() + "\n password: " + password; } public static void main(String[] args) { LoggingInfo logInfo = new LoggingInfo("MIKE", "MECHANICS"); System.out.println(logInfo.toString()); try { ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream( "logInfo.out")); o.writeObject(logInfo); o.close(); } catch (Exception e) {// deal with exception } // To read the object back, we can write try { ObjectInputStream in = new ObjectInputStream(new FileInputStream( "logInfo.out")); LoggingInfo logInfo1 = (LoggingInfo) in.readObject(); System.out.println(logInfo1.toString()); } catch (Exception e) {// deal with exception } } } 引用 在上面代码中,transient变量的值不会被写入到对象流中,由transient修饰的变量在序列化时不保存状态
打印结果: logon info: user: MIKE logging date : Wed Mar 18 02:43:51 GMT 2009 password: MECHANICS logon info: user: MIKE logging date : Wed Mar 18 02:43:51 GMT 2009 password: NOT SET 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-19
也就是说不能被 持久化?
|
|
返回顶楼 | |
发表时间:2009-03-23
可以这么理解..
|
|
返回顶楼 | |
发表时间:2009-03-23
如此,有何用?
|
|
返回顶楼 | |
发表时间:2009-03-23
foreverandever 写道 如此,有何用?
在对象传输的情况下,有些域是"瞬时的",也就是说只与当前进程环境相关,出了这个进程就没有意义了,这样的域是"本地化的",没有序列化的价值,标为瞬时态的. |
|
返回顶楼 | |