当我尝试使用JNI
时,如果给出任意的jobject
,是否可以确定它是LocalRef
还是GlobalRef
?
不幸的是,即使都需要不同的释放方式,NewLocalRef
和NewGlobalRef
都返回相同的jobject
类型。
如果不可能,那么至少可以假设所有jobject
要么作为参数传递到直接从Java调用的本机函数中,要么从JNI调用返回(NewGlobalRef
除外)都是LocalRef
。
我找不到任何文档来确认该假设是正确的,尽管它似乎确实适用于Oracle Java和Android。
最佳答案
至少可以假设所有Jobject要么作为参数传递到直接从Java调用的本机函数中
这些始终是LocalRefs。
或从JNI调用(NewGlobalRef除外)返回的都是LocalRef。
方法返回的结果取决于它。您不能做任何假设。