transient解析

       transient不是常用的关键字,而且在大多数的场合下不怎么使用;下面谈谈我对transient的理解。

       关于transient的一般解释:变量修饰符,被transient修饰的变量不参与序列化过程。

       我的问题:(1)序列化是怎样的过程?(2)transient的使用范围、场景、注意点

       下面一一解答:

(1)序列化是怎样的过程?

       序列化,实际上就是持久化;所谓持久化指的是将数据永久保存起来。在代码中,数据是存储在对象中的,所以,简单来说将对象存储或者传输的过程就是序列化(传输:就是换个地方存储数据)。序列化只是将对象的状态保存起来,所以只对属性起作用,不能对方法序列化。

      序列化的原理:将对象转换成二进制字节序列,存储起来。就是说,在实际存储过程中。存放的是二进制字节序列。转换是按照特定的格式进行的,每个类的序列化ID不同转成的二进制序列也不同。

      实现序列化的方式:(1)实现Serialization接口,并生成序列化ID  (2)使用ObjectOutputStream写文件,或远程传输。感兴趣的可以进一步去看看内存数据如何写入磁盘,数据库,如何进行远程网络传输。网络这里涉及到许多的通信协议和报文都可以瞧瞧去。

(2)transient的使用范围、场景、注意点

1、transient只能修饰属性,不能修饰方法和类

2、被transient修饰的属性,表示对对象某个状态的临时保存,不会把这个属性的值持久化存储或者传输

3、反序列化时,被transient修饰的变量会被赋初值,比如:int的就是0,string就是null

4、static修饰的变量也不能被序列化

以上。后面有新的想法会继续更新,欢迎大家指正。如需转载,请注明出处。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值