我目前正在编写一个网络应用程序,它必须能够通过TCP连接发送一个2D数组和一个常规对象数组。
到目前为止,我的第一个也是唯一一个解决方案是使用ByteArrayOutputStream和ObjectOutputStream,但这只有在我发送一个特定类型的数组时才会起作用,我会在另一侧回击。
现在这可行了
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(2dArray);
Byte[] send = baos.toByteArray();
但是我只能使用这个,如果我只发送2d int数组,因为我需要在另一端打字,并且如前所述,我希望能够发送不同类型的2d和常规数组。 / p>
还有其他可以用于此的ObjectOutputStream吗?
答案 0 :(得分:2)
当您收到远程端的对象时,您可以检查它是哪种对象。例如,你可以写:
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;
}
如果您使用其他东西进行通信,您仍然需要以某种方式指出您要发送的阵列类型,因此您将始终遇到同样的问题。