Java:将字节数组解释为对象

Java:将字节数组解释为对象,java,sockets,object,Java,Sockets,Object,我正在从Java客户机中的套接字接收一个对象。如何将接收到的字节数组解释为Java客户端中定义的对象 我所知道的只是对象在发送方系统上的外观,即各个变量的位大小 您需要一个从字节到对象的转换方法,如下所示 public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException { ByteArrayInputStream in = new ByteArrayInputStream(data)

我正在从Java客户机中的套接字接收一个对象。如何将接收到的字节数组解释为Java客户端中定义的对象


我所知道的只是对象在发送方系统上的外观,即各个变量的位大小

您需要一个从字节到对象的转换方法,如下所示

public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(data);
ObjectInputStream is = new ObjectInputStream(in);
return is.readObject();
}
如果您的类扩展了
可序列化的
,则可以通过
ByteArrayOutputStream
写入和读取对象

或者使用
SerializationUtils
from中的
序列化
反序列化
方法。

取决于格式


您可以使用反序列化,或者如果有自定义序列化技术,请自己解释字节。

该“对象”最初是如何转换为字节的?@OliverCharlesworth我不太清楚。socket send函数只是获取缓冲区的地址和大小并发送它。如果您不知道对象是如何表示的,那么您就不可能编写转换代码……Java中有什么样的方法可以自己对字节进行交互?我认为某种类型的铸造将是解决方案。但Java中似乎不允许将字节数组强制转换为类,这仅适用于使用自定义序列化的情况。例如,前4个字节表示年龄字段等,但您需要清楚地了解序列化协议。好的,谢谢。我知道我需要在发送方了解有关序列化协议的更多信息。