我的网站上(http://www.rajeshpatkar.com/articles/javarefpnt/),该读出时,我们实例化一个类即Java中的句柄的概念是什么?
Emp e = new Emp();
甲句柄存储在变量e,即它不对象的地址存储在存储器中,其不是指针。
该解释给出了一个指针数组的例子。存储器地址存储在[1]位置,当对象移动时,该位置用新地址更新。
那么为什么这个数组被用来代替直接存储地址(它声明它有助于GC,但我不理解它)并在对象移动时更新它(存储在e中的地址)?
我花了相当多的时间来理解这一点,但仍然没有找到满足我的答案。 所以,如果你能解释一下实际存储在变量'e'中的东西(举一个例子),它会很有帮助。
谢谢:)
很好的解释队友。我终于理解了句柄的概念。继续使用指针数组的例子,即'e'(引用变量)指向一个[1](依次[1])存储对象的地址。另外我知道我们不能改变'e'的值,也就是说我们不能在e中指向[5]或java中的任何其他内存,只有内容即存储在[1]中的值可以改变。这在Java中的原因是什么,即为什么不允许将'e'指向java中的任何其他位置?允许它有什么风险? –
@JayeshSaita:很高兴帮助。 *“...我进一步知道我们不能改变'e'的值......”是的,我们可以:'e = someOtherObject;'不要被JVM如何实现它。只是:变量存储值。存储在引用类型变量中的值是一个对象引用。该值告诉JVM对象在哪里。 :-) –