我的網站上(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對象在哪裏。 :-) –