繁体   English   中英

将字节数组分配给Java对象

[英]Assigning byte array to Java Object

是否可以在不解析数据的情况下直接将字节arra(通过tcp套接字接收)分配给Java对象?

在c中可以直接将字节分配给结构,在java中可以吗?

不可能将字节数组分配给Java中的对象并自动填充所有成员变量,但是可以使用序列化从字节数组中获取Java对象。

您可以使用ObjectInputStreamObjectOutputStream将对象ObjectOutputStream和移出流。 要从字节数组中取出一个,请在ObjectInputStream包装一个ByteArrayInputStream 该对象必须实现Serializable接口。 这应该可以帮助您避免手动解析字节数组。

ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
MyObject o = (MyObject) in.readObject();

如果您正在读取的数据不是序列化的Java对象,则可以向该对象添加方法以帮助序列化。

从javadoc中获取ObjectInputStream

在序列化和反序列化过程中需要特殊处理的可序列化类应实现以下方法:

private void writeObject(java.io.ObjectOutputStream stream) throws IOException;
private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException;
private void readObjectNoData() throws ObjectStreamException;

因此,您可以使用自定义readObject方法中的stream.read(...)手动读取数据,并使用它在对象上设置成员变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM