Java需要帮助反序列化多维数组
我正在编写一个模块来序列化其他模块,我已经让所有东西都正常工作了,只是我不确定应该如何反序列化多维数组 问题是,我需要反序列化类似的东西(每个节点都有其他属性,比如objects SUID,为了简单起见,我已经排除了这些属性) 问题是我不知道如何通过编程创建深度为x的数组?也就是说,如果我必须按自己的方式来做,可能会是这样:Java需要帮助反序列化多维数组,java,arrays,serialization,Java,Arrays,Serialization,我正在编写一个模块来序列化其他模块,我已经让所有东西都正常工作了,只是我不确定应该如何反序列化多维数组 问题是,我需要反序列化类似的东西(每个节点都有其他属性,比如objects SUID,为了简单起见,我已经排除了这些属性) 问题是我不知道如何通过编程创建深度为x的数组?也就是说,如果我必须按自己的方式来做,可能会是这样: switch(iArrayDepth) { case 1: return new ArrayList<Integer>(); c
switch(iArrayDepth)
{
case 1:
return new ArrayList<Integer>();
case 2:
return new ArrayList<ArrayList<Integer>>();
case 3:
return new ArrayList<ArrayList<ArrayList<Integer>>>();
etc...
}
开关(iArrayDepth)
{
案例1:
返回新的ArrayList();
案例2:
返回新的ArrayList();
案例3:
返回新的ArrayList();
等
}
一定有更好的方法:S
另一个问题是,当我需要取消此数组的装箱并使其成为基本类型的多维数组时 您可以使用创建一个数组,该数组的类型和维度在编译时是未知的。例如,下面创建一个3 x 4 x 5的
int
数组
Object array = Array.instance(Integer.CLASS, 3, 4, 5);
或
这也解决了问题的第二部分。ArrayList不是数组。泛型在运行时具有类型擦除功能,因此您尝试使用开关执行的操作在运行时毫无意义 如果您想创建一个列表,只需创建一个没有泛型的列表即可
List list = new ArraysList();
如果要创建特定类型的数组,可以使用数组
Object array = Arrays.newArray(arrayType, arrayDepth);
我会重新考虑你的文件格式。它对于您传输的数据量来说是冗长的
像这样的怎么样
int[[ 2
1,2
3,4
这将以更紧凑的格式传递相同的信息
List list = new ArraysList();
Object array = Arrays.newArray(arrayType, arrayDepth);
int[[ 2
1,2
3,4