transient 关键字

本文介绍了Java中transient关键字的作用及使用方法,通过示例详细解释了如何利用transient关键字排除对象序列化过程中不需要的部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这算是个生僻的关键字了,平常实在用的不多。偶尔碰到了,研究了一下它的作用:

 

 

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想 用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。   


transient是Java语言的关键字,用来表示一个域不是该对象序列化的一部分。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。  

 

 

 


注意:

    1,static变量也是可以序列化的 

 

    2,当从磁盘中读出某个类的实例时,实际上并不会执行这个类的构造函数,而是读取这个类的实例的状态,并且把这个状态付给这个类的对象。

 

例子,下面是一个类:

 

 

现在我们创建一个这个类的实例,并且序列化(serialize)它 ,然后将这个序列化对象写入磁盘:

再将此对象读取出来:

如果我们运行这段代码,我们会注意到从磁盘中读回(read——back (de-serializing))的对象打印password为"NOT SET"。这是当我们定义pwd域为transient时,所期望的正确结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值