如何通过Java整数数组到C使用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: %dn", "Passed value (int)", result);

}

最新更新