【发布时间】:2011-05-29 07:15:58
【问题描述】:
我正在编写一个序列化其他模块的模块,但我已经完成了所有工作,只是我不确定应该如何反序列化多维数组。
问题是,我需要反序列化这样的东西(为简单起见,我已经排除了每个节点的其他属性,例如对象 SUID。)
<var object="[[I">
<_0 object="[I">
<_0 object="java.lang.Integer">1</_0>
<_1 object="java.lang.Integer">2</_1>
</_0>
<_1 object="[I">
<_0 object="java.lang.Integer">3</_0>
<_1 object="java.lang.Integer">4</_1>
</_1>
</var>
每个节点上的“对象”属性描述它是什么对象。如果它是一个原始类型的数组,它将以一个[ 括号数组开始,每个括号代表一个深度计数。即:
type int[][] = [[I
type int[] = [i
问题是我不知道如何以编程方式创建一个深度为 x 的数组?也就是说,如果我必须按照我的方式去做,它可能会是这样的:
switch(iArrayDepth)
{
case 1:
return new ArrayList<Integer>();
case 2:
return new ArrayList<ArrayList<Integer>>();
case 3:
return new ArrayList<ArrayList<ArrayList<Integer>>>();
etc...
}
一定有更好的方法:S
当我需要拆箱这个数组并使其成为原始类型的多维数组时,会出现另一个问题。
【问题讨论】:
标签: java arrays serialization