看板 java 關於我們 聯絡資訊
※ 引述《adrianshum (Alien)》之銘言: : 其實我一向都主張把 Java 的 reference : 當成指標理解的. : 事實上除了不能作 pointer manipulations 以外, : 也的確和pointer 沒有什麼大分別. : 以 pointer 去理解, 很多概念會更清楚. 這方式比較適用於本來就懂何謂 pointer 的人吧? 真的要探討 Java Reference 與 pointer 的不同處,除了 Java Reference 不能 作 pointer arithmetic 外,Java PL 沒有明顯的 dereference 語意(直接使用 .)。 再加上 Java 是 strong-typed runtime,所以也不能透過改變 reference value 的 compile-time type 來改變 dereference 行為。 如果你有使用 JNI,更不能假設 Java Reference 是 pointer(object 的位址)。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.129.48
weiyucsie:typedef _jobject *jobject; <-- jni.h 04/28 04:24
weiyucsie:上面是Sun JDK裡面的include檔(雖然括號裡面沒說錯啦XD) 04/28 04:28
畢竟這是 C header,他設計成讓 C native function 可以透過 pointer 來操作 某些結構,與 Java reference 是否是 pointer 關係不大。 再者,你可以看出 _jobject struct/class 的 layout 嗎?一個 Java Reference value pass 給 native method 對應的 native function 後,會成為 _jobject* value,但你對此 value 做 dereference 並無法直接 access Java object 所佔用 的空間。 ※ 編輯: sbrhsieh 來自: 218.173.134.219 (04/28 16:03)