transient关键字的对象是不参与序列化的,TreeSet中保存数据的变量m就是被transient修饰的,理论上是不被序列化的,但为什么反序列化后treeset还会有数据?
2条回答 默认 最新
- libolf 2019-05-17 16:56关注
并不是说有transient关键字修饰的变量就一定不会被序列化,transient是针对系统来说的,此类中如果有自定义readObject和writeObject方法,方法中已经对transient变量作了序列化处理,那么还是可以被序列化的。
下面是例子,若没有read和write方法,那么变量a序列化完后会是0,若有则是序列化的值。static class Bean implements Serializable { private static final long serialVersionUID = 2966031808490167073L; int x = -1, y = -1, z = -1; transient int a = -1; private void writeObject(ObjectOutputStream stream) throws IOException { stream.writeInt(x); stream.writeInt(y); stream.writeInt(z); stream.writeInt(a); } private void readObject(ObjectInputStream inputStream) throws IOException { x = inputStream.readInt(); y = inputStream.readInt(); z = inputStream.readInt(); a = inputStream.readInt(); } @Override public String toString() { return "Bean{" + "x=" + x + ", y=" + y + ", z=" + z + ", a=" + a + '}'; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 flink cdc无法实时同步mysql数据
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决