作者sbrhsieh (sbr)
看板java
标题Re: [问题]JAVA指标???
时间Mon Apr 27 17:13:42 2009
※ 引述《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
1F:推 weiyucsie:typedef _jobject *jobject; <-- jni.h 04/28 04:24
2F:→ 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)