假设我DataInputStream用来接收数据,但我不知道是否应该使用(例如)readUTF,readInt或者readLong.有没有一种方法可以告诉我在另一边写了什么类型的数据?
不,没有机制可以反省流来查找这些信息.如果您需要这样做,那么发件人需要将元数据添加到流中,以指示接下来将采用何种数据.
例如,发送方可以发送一个0字节(可能是"下一个数据项为"的信号int),然后发送int,然后发送一个1字节("下一个数据项为"的信号long),然后靠long自己.
消费者会读取信号,并知道是否打电话readInt或readLong.
或者,您可以使用ObjectInput而ObjectOutput不是DataInputStream为您执行内省(如果您使用writeObject()和readObject()).