zoukankan      html  css  js  c++  java
  • Java基础之数组序列化、反序列化 小发现(不知道 是不是有问题)

    结论:  数组,无论是否声明为transient,都是可以序列化、反序列化的。

    测试情况如下:

    1.两种类型的数组:int 、String;

    2 声明为transient  或者不做任何修饰;.

    3.将数组 按ObjectOutput存入文件,使用ObjectInputStream读取打印出来。

    结果我发现无论是基本类型还是引用类型,无论 是否将数组修饰为transient,都是可以序列化和反序列化的。

    贴一段代码如下:

    File file = new File("test.txt");
    
    		FileOutputStream fout = new FileOutputStream(file);
    		ObjectOutputStream objOut = new ObjectOutputStream(fout);
    		objOut.writeObject(arrs);
    		objOut.close();
    		FileInputStream fin = new FileInputStream(file);
    		ObjectInputStream objectInputStream = new ObjectInputStream(fin);
    		int[] arrs = (int[]) objectInputStream.readObject();
    
    		for (int  str : arrs) {
    
    			System.out.println(str);
    		}


    这个问题是我在看ArrayList的源码时, 发现的,ArrayList中定义数组如下:

     private transient Object[] elementData;;

    将ArrayList序列化和反序列化都是可以 读取 其中的值的,so最后测试了下数组,发现了这个问题.

    不知道 结论对不对, 求  修正我的 问题。

    我查看了这篇文章:

    http://lixusign.iteye.com/blog/1063324

    但是他好像仅解释了为什么使用修饰  ArrayList中的数组,却没有说清楚(不知道是否我 理解 有问题)为什么  ArrayList 序列化、反序列化 都是可以 。

  • 相关阅读:
    八数码难题 (codevs 1225)题解
    小木棍 (codevs 3498)题解
    sliding windows (poj 2823) 题解
    集合删数 (vijos 1545) 题解
    合并果子 (codevs 1063) 题解
    等价表达式 (codevs 1107)题解
    生理周期 (poj 1006) 题解
    区间 (vijos 1439) 题解
    区间覆盖问题 题解
    种树 (codevs 1653) 题解
  • 原文地址:https://www.cnblogs.com/riskyer/p/3306525.html
Copyright © 2011-2022 走看看