当我尝试使用JNI时,如果给出任意的jobject,是否可以确定它是LocalRef还是GlobalRef

不幸的是,即使都需要不同的释放方式,NewLocalRefNewGlobalRef都返回相同的jobject类型。

如果不可能,那么至少可以假设所有jobject要么作为参数传递到直接从Java调用的本机函数中,要么从JNI调用返回(NewGlobalRef除外)都是LocalRef

我找不到任何文档来确认该假设是正确的,尽管它似乎确实适用于Oracle Java和Android。

最佳答案

至少可以假设所有Jobject要么作为参数传递到直接从Java调用的本机函数中


这些始终是LocalRefs。


或从JNI调用(NewGlobalRef除外)返回的都是LocalRef。


方法返回的结果取决于它。您不能做任何假设。

10-06 04:12