transient解惑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/81876475

被问到HashMap中的transient是干嘛的,真是无孔不入

1.transient 是表明该数据不参与序列化。因为 HashMap 中的存储数据的数组数据成员中,数组还有很多的空间没有被使用,没有被使用到的空间被序列化没有意义。所以需要手动使用 writeObject() 方法,只序列化实际存储元素的数组。
2. 由于不同的虚拟机对于相同 hashCode 产生的 Code 值可能是不一样的,如果你使用默认的序列化,那么反序列化后,元素的位置和之前的是保持一致的,可是由于 hashCode 的值不一样了,那么定位函数 indexFor()返回的元素下标就会不同,这样不是我们所想要的结果.
原文参考:Java笔记 - transient
还有一个讨论:Java中HashMap关键字transient的疑惑

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/81876475