美文网首页
Java中ArrayList的序列化,既然重写了writeObj

Java中ArrayList的序列化,既然重写了writeObj

作者: Mervyn_2014 | 来源:发表于2017-03-08 17:26 被阅读279次

Transient: 此关键字智能用于变量,表示不能被序列化。

在ArrayList中存储元素的变量用transient修饰,所以理论上ArrayList不能被序列化。但是在ArrayList中却可以,因为在ArrayList中重写了writeObject 这个方法,所以可以转化为文件流,可以被序列化。

网上说这样设计的目的是因为在ArrayList中的存放元素的是一个素组,这个数组的容量大小基本上都会比实际的元素的个数要大,为了避免序列化没有元素的数组而重写。

实际上在我的测试中确实也是如此,阅读ObjectOutInputStream的源码会发现,如果你重写了writeObject 和readObjec 这个两个方法,在实际序列化的时候,会利用反射最终调用到你重写的writeObject和readObject 来序列化。

相关文章

  • Java中ArrayList的序列化,既然重写了writeObj

    Transient: 此关键字智能用于变量,表示不能被序列化。 在ArrayList中存储元素的变量用transi...

  • Java Jackson ObjectMapper

    Java Jackson ObjectMapper ObjectMapper 将Json反序列化成Java对象的重...

  • transient关键字

    Java中的序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指...

  • ArrayList 源码分析

    ArrayList简介: ArrayList 属于 Java 中的高级数据的集合框架。项目包在 java.uti...

  • ArrayList阅读笔记

    简单介绍 ArrayList默认实现了java的序列化Serializable,意味着可以支持网络上的实体传输和本...

  • JAVA反序列化漏洞

    目录 反序列化漏洞序列化和反序列化JAVA WEB中的序列化和反序列化对象序列化和反序列范例JAVA中执行系统命令...

  • ArrayList和LinkedList异同和效率比较

    Java常见比较二 ArrayList ArrayList 在内存中是连续的、单向的、有序的。ArrayList ...

  • 序列化(java Serializeable、json、prot

    java序列化 序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java...

  • Java(1.8)集合中的HashSet

    Java(1.8) 集合中的LinkedListJava(1.8) 集合中的ArrayList Java(1.8)...

  • 总结

    java基础 Java中多态的理解 反射 Java序列化与反序列化 Volatile和Synchronized e...

网友评论

      本文标题:Java中ArrayList的序列化,既然重写了writeObj

      本文链接:https://www.haomeiwen.com/subject/iaobgttx.html