【发布时间】:2012-09-16 13:14:42
【问题描述】:
我有一个字节数组和一个对象引用。
byte[] data = new byte[128];
Block b = new Block();
我想将引用 b 存储在 "data" 数组的最后 2(或 4)个字节中。
请注意:我不想序列化对象并存储在字节数组中。我需要存储一个指向新块的指针(引用)。
编辑
我的Block类如下
public class Block {
byte[] data ;
public Block(){
data = new byte[128];
}
}
基本上,数据数组将使用 126 字节来存储字符串,最后两个(或 4)字节来存储对另一个块的引用。它是一种链接列表。
我本可以使用 Block 类的不同定义来完成它[通过在类本身中包含对 Block 的引用]。但是问题陈述指出了只有最后 2 个字节应该用作对另一个块的引用的约束。从其他帖子我知道在 jvm(32 位)中,引用的大小为 4 个字节。因此我认为只能使用最后 4 个字节来完成
问题陈述片段
块的最后 2 个字节用于指向下一个块。 假设文件大小为 8 个块,那么第 4 个字节的最后 2 个字节 block 将指向第 5 个块,第 5 个块的最后 2 个字节指向 第 6 块,依此类推。
【问题讨论】:
-
我相信你不能得到一个对象的引用地址。
-
你打算用那个 2/4 字节的引用做什么?
-
请说明您将如何处理字节数组。如果您通过套接字或 IPC 将其发送到文件或其他应用程序,那么在该运行进程中保留仅对应用程序本身有意义的引用是没有用的。
-
@E_net4 使用问题陈述中的 sn-p 编辑问题
-
@PeterLawrey :-D 我不确定拼图的年龄。但是在阅读了这里的帖子之后,我非常有信心在我的类定义中使用对块的引用
标签: java arrays memory byte object-reference