Re: [問題]JAVA指標???

看板java作者 (sbr)時間16年前 (2009/04/27 17:13), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串6/7 (看更多)
※ 引述《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

04/28 04:24, , 1F
typedef _jobject *jobject; <-- jni.h
04/28 04:24, 1F

04/28 04:28, , 2F
上面是Sun JDK裡面的include檔(雖然括號裡面沒說錯啦XD)
04/28 04:28, 2F
畢竟這是 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)
文章代碼(AID): #19zNT9cn (java)
討論串 (同標題文章)
文章代碼(AID): #19zNT9cn (java)