如何确定jobject是LocalRef还是GlobalRef?

时间:2013-09-14 17:51:53

标签: java android java-native-interface

使用JNI时我想弄清楚,如果给出任意jobject,是否可以确定它是LocalRef还是GlobalRef

不幸的是,NewLocalRefNewGlobalRef都返回相同的jobject类型,即使两者都需要以不同的方式发布。

如果这是不可能的,那么至少可以假设所有jobject作为参数传递到直接从Java调用的本机函数,或者从JNI调用(其他NewGlobalRef)返回所有LocalRef s。

我找不到任何文件来确认该假设是有效的,尽管它似乎确实存在于Oracle Java和Android上。

1 个答案:

答案 0 :(得分:1)

  

至少可以假设所有jobjects都作为参数传递给直接从Java调用的本机函数

这些始终是LocalRefs。

  

或从JNI调用返回(其他NewGlobalRef)都是LocalRefs。

方法返回的是它。你无法做出任何假设。