transient关键字有什么用?最好有小例子参考一下 这个在《Thinking in Java》中有很详细的解释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你将一个字段声明为volatile,则多线程将能访问此字段,而特定的编译器将防止最优化以使该字段能被适当的访问。定义为transient的字段值在对象串行化过程中将不被保存。 串行化一般占用很大空间声明为transient(瞬时变量)可防止被串行化被保存这也就为什么它叫瞬时变量 昨天我就问过一个样的问题呵我把答复粘给你一般情况下,序列化时会把所有field全部写到流(你可以当作文件来考虑)里,有时并不是所有field都是那么有用。打个比方吧!你的类中有一个method计算非常耗时,而每次计算的结果都是一样的,这时你可能会考虑以lazy的方式来计算,就是第一次用的时候才开始具体计算,然后,在类里用一个field把这个结果保存起来,这样程序的效率就会得到提高。OK,现在你要对这个类做序列化了,这个field是类的一部分,但保存它并没有什么太大的意义,即便反序列化之后再用到,无非就是再算一次就可以了。你决定不对这个field进行序列化,这时就是transient起作用的时候了,有了它,序列化时就不会把它夜写到流里。当然,反序列化时,也没有它什么事 那一个类中哪一部分是field? 请问哪位大虾知道这个程序有什么错误,谢谢! 关于反射的问题 关于XML文件的解析,生成问题 二分法查找算法的java又一具体实现;欢迎朋友来检查; JTextField问题 自动聚焦(在线等) java mail 请教deprecated methods的用法 String 和 byte[]的转换? 送分来了,请教下cvsnt问题 菜问题:如何进行数据类型的转化,比如int转化为string 各位,用Jbuilder9中的queryDataSet为何不能编辑数据。救命啊 JSP 连 SQL Server 的问题!
声明为transient(瞬时变量)可防止被串行化被保存这也就为什么它叫瞬时变量
我把答复粘给你一般情况下,序列化时会把所有field全部写到流(你可以当作文件来考虑)里,有时并不是所有field都是那么有用。
打个比方吧!你的类中有一个method计算非常耗时,而每次计算的结果都是一样的,这时你可能会考虑以lazy的方式来计算,就是第一次用的时候才开始具体计算,然后,在类里用一个field把这个结果保存起来,这样程序的效率就会得到提高。OK,现在你要对这个类做序列化了,这个field是类的一部分,但保存它并没有什么太大的意义,即便反序列化之后再用到,无非就是再算一次就可以了。你决定不对这个field进行序列化,这时就是transient起作用的时候了,有了它,序列化时就不会把它夜写到流里。当然,反序列化时,也没有它什么事