如何使用 JNI 将 Java 整数数组传递给 C?

How to pass a Java Integer array into C using JNI?

本页https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html列举了JNI处理的数据类型。例如,要处理数据类型为 int 的 Java 变量,在 JNI 中等效于 jint.

现在,如果我有一个数据类型为 Integer 的 Java 变量,我该如何在 JNI 中处理这个变量,因为这种数据类型没有明显的等价性?

您必须像对待任何其他对象一样对待 Integer。您必须找到它的方法 (intValue) 并在 JNI

中调用它
JNIEXPORT void JNICALL Java_recipeNo055_PassObject_passInteger
  (JNIEnv * env, jclass obj, jobject objarg) {

  jclass cls = (*env)->GetObjectClass (env, objarg);

  jmethodID intValue = (*env)->GetMethodID(env, cls, "intValue", "()I"); 

  jint result = (*env)->CallIntMethod(env, objarg, intValue);

  printf("%-22s: %d\n", "Passed value (int)", result);


}