我知道这个问题有点笼统,但我已经需要一个通用的答案了。所以我想了解的是如何从内存的角度访问对象的成员变量,例如,当对该对象调用方法时?
例如,我有这个简单的课程;
class Hoo {
public int field;
// constructor, setters, getters
...
}
class Foo {
Hoo hoo;
void setHoo() {
hoo = new Hoo(...)
}
}
运行时如何在hoo初始化之前找出它的内存地址?同样适用于以下代码;
class Foo {
Hoo hoo = new Hoo();
void setHooField() {
hoo.field = 5;
}
}
运行时如何知道该字段的地址以在其上存储值?
IMO,至少对于 Java,这些变量地址被映射到类文件中的偏移量,因此可以通过将此偏移量添加到传递的对象引用(到虚拟方法中)来计算出确切的位置(在虚拟内存上)。但不确定...
有任何想法吗?