你必須把其他維度自報家門,如下面的代碼片段:
public static class Foo implements DataSerializable {
private double[][] multiDimArray;
@Override
public void writeData(ObjectDataOutput out)
throws IOException {
int firstDim = multiDimArray.length;
out.writeInt(firstDim);
for (int i = 0; i < firstDim; i++) {
out.writeDoubleArray(multiDimArray[i]);
}
}
@Override
public void readData(ObjectDataInput in)
throws IOException {
int firstDim = in.readInt();
multiDimArray = new double[firstDim][];
for (int i = 0; i < firstDim; i++) {
multiDimArray[i] = in.readDoubleArray();
}
}
}
這樣就可以兩個寫入陣列中的任何深度成流。您可能可以稍微抽象出兩種方法(讀/寫),以便更方便地使用。