Android 两个java对象,相同的本机地址?

Android 两个java对象,相同的本机地址?,android,java-native-interface,Android,Java Native Interface,我有这样的本地方法 public native int NativeMethod(Object object); JNIEXPORT jint JNICALL NativeMethod( JNIEnv *, jobject, jobject object) { printf("%d", (int)object); } 我使用不同的Java对象调用该方法两次 在Java中,我输出它们的hashCode()和toString()info,它们的值不同 但在本机C中

我有这样的本地方法

public native int NativeMethod(Object object);

JNIEXPORT jint JNICALL  NativeMethod(
    JNIEnv *,
    jobject,
    jobject object) {
   printf("%d", (int)object);
}
我使用不同的Java对象调用该方法两次

在Java中,我输出它们的
hashCode()
toString()
info,它们的值不同

但在本机C中,它们具有相同的输出值

这是在安卓5.x设备上观察到的,在5.0以下的设备上运行良好。 而且它第一次工作(C中的值不同),之后就不工作了(一些操作,不是特定的)

真的,我不知道怎么修理它。
有人能帮忙吗?请。

但在本机C中,它们的输出值相同。什么有相同的输出<代码>printf(“%d”,(int)对象)?如果是的话,你为什么要为此烦恼?可能是在内存中复制java传递的值的同一个位置。。。它应该在
NativeMethod
范围内有效。。。如果你想在这个范围之外使用它,那么问题是:你在使用NewGlobalRef吗?(您是否在不确保其全球性的情况下隐藏参考资料?)。是,printf(“%d”,(int)对象);“具有相同的输出。因为我需要将jobject发送给第三方API,并且如果第二个jobject与第一个jobject具有相同的地址,API将不会根据jobject第二次创建新Instance。您的意思是我需要NewGlobalRef(jobject)然后将GlobalRef发送到第三个API?我会尝试,非常感谢..它工作得很好。谢谢。如何将它标记为答案?