在Java中使用类似于C ++中的进行转换

我进入我的函数消息字节数组和对象类型,我需要从字节中恢复对象。 在Java中是否存在类似C ++的演员表?

不,您可以使用序列化 。

在Java中没有任何方法可以拥有任意的字节块,然后告诉编译器“你需要将它视为X类型的对象”。

那些你想要“恢复成对象”的字节是如何创建的?

Java有一个序列化机制,可以将对象转换为字节流,反之亦然。

我不确定你在这里问什么,但Java中的每个对象(包括数组)都有与之关联的运行时类型信息。 因此,当您将对象转换为其他类型时,如果新类型不匹配,则会立即抛出exception。 这与C / C ++非常不同,在C / C ++中,您可以告诉编译器将内存块视为您希望的任何对象。

如果您正在寻找将任意字节集转换为对象的代码,反之亦然,您需要以不同的方式执行此操作,使用内置的序列化工具或者滚动您自己的转换代码。

不,您需要序列化您的对象。 http://java.sun.com/developer/technicalArticles/Programming/serialization/

如果您希望对象数据在其他语言中可读,则这可能没有用。

这是实现你想要的方法。

public static Object toObjectFromByteArray(byte[] byteArr) { if (byteArr == null) { return null; } Object resultObj = null; ByteArrayInputStream bin = null; ObjectInputStream ooin = null; try { bin = new ByteArrayInputStream(byteArr); ooin = new ObjectInputStream(bin); resultObj = ooin.readObject(); } catch (Exception ex) { throw new RuntimeException(ex); } finally { try { if (ooin != null) { ooin.close(); } if (bin != null) { bin.close(); } } catch (IOException ex1) { ex1.printStackTrace(); } } return resultObj; } public static byte[] toByteArray(Object obj) { ByteArrayOutputStream barr = null; ObjectOutputStream oout = null; byte[] bytearr = null; try { byte[] b2 = null; barr = new ByteArrayOutputStream(10000); oout = new ObjectOutputStream(barr); oout.writeObject(obj); oout.flush(); oout.close(); bytearr = barr.toByteArray(); } catch (Exception ex) { throw new RuntimeException(ex); } finally { try { if (oout != null) { oout.close(); } if (barr != null) { barr.close(); } } catch (IOException ex1) { ex1.printStackTrace(); } } return bytearr; }