我来自C++背景。在C++中,我可以将一个内存地址存储在全局数组中,并在以后重新使用它。例如,假设我有两个类X,Y和我创建了两个对象x,y。Java:如何在C++中存储和检索内存地址
uint32_t StoreAddresses[2];
我写:
X * x = new X();
Y * y = new Y();
StoreAdresses[0] = (uint32t *) x; //for example, 0x12345678
StoreAdresses[1] = (uint32t *) y; //for example, 0x12345698
Anywhere的我的程序,我可以检索写在存储器中的数据,通过调用:作为全局阵列StoreAddresses [2]被定义
X * stored_x = (X*)StoreAdresses[0];
Y * stored_y = (Y*)StoreAdresses[1];
我怎样才能在Java中实现? 感谢帮助!
Java和C/C++之间的原理差异之一是Java限制了程序员使用和滥用内存的能力。我想你可以用一个字节数组来模拟这个(或者像Peter Lawrey所说的那样,使用'unsafe',但是对于他来说就是1+),但是更好的做法是让你学习Java的方法并且使你的编码适应它的优点,不是它的弱点。 – 2011-12-26 12:14:48
与@HovercraftFullOfEels一致 - 为了实现你想要做的事情,你应该将'X'和'Y'的引用存储在一个静态字段中,而不是用内存地址。 – Chii 2011-12-26 12:19:59
真正的问题是:你为什么要这样做 – 2011-12-26 12:21:37