我有一个对象,它可以是n维的object[],我需要将其转换为具有相同表示的n嵌套列表,即[][][]变成ArrayList>>。我通过一个变量知道n在运行时的大小。另一个警告是,'最低'数组中的对象必须在添加到'最低'列表之前进行处理;对象不能被复制。下面是一维数组
的简单例子Object array; // argument
List<Object> list = new ArrayList<Object>();
for(Object o : (Object[])array) {
list.add(process(o));
}
这个例子没有考虑维度,因此在简单情况下"只适用",但在复杂情况下就行不通了。我如何以一般的方式处理n的情况?
Object process(Object possibleArray) {
if (possibleArray instanceof Object[]) { // is array
Object[] array = (Object[]) possibleArray;
List<Object> list = new ArrayList<Object>(array.length);
for(Object o : array) {
list.add(process(o));
}
return list;
} else {
return possibleArray;
}
}