我目前正在编写一个网络应用程序,该应用程序必须能够通过TCP连接发送一个2D整数数组和一个常规对象数组。

到目前为止,我的第一个也是唯一的解决方案是使用ByteArrayOutputStream和ObjectOutputStream,但这仅在我发送另一种类型转换的特定类型的数组时才有效。

现在这可以工作

baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);

oos.writeObject(2dArray);
Byte[] send = baos.toByteArray();


但是我只能在仅发送2d int数组的情况下使用此选项,因为我需要在另一端对它进行排版,并且如前所述,我希望能够发送不同类型的2d和常规数组。

除了ObjectOutputStream之外,还有其他可用于此目的的东西吗?

最佳答案

当您在远端收到一个对象时,您可以检查它是哪种对象。例如,您可以编写:

Object received = in.readObject();
if (received instanceof int[]) {
    // received 1d array
    int[] array1D = (int[]) received;
} else if (received instanceof int[][]) {
    // received 2d array
    int[][] array2D = (int[][]) received;
}


如果您使用其他方式进行通信,则仍然必须以某种方式指示要发送的数组的类型,因此始终会遇到相同的问题。

10-08 01:17