如何读取从Java传递到JNI的对象数组

How to read an array of objects passed into JNI from Java

本文关键字:JNI 数组 对象 Java 何读取 读取      更新时间:2023-10-16

这听起来可能是一个新手问题,但我想知道从java传递到JNI c++的对象数组的正确读取和迭代方式。

例如,对象的签名为:

public class Node{
     public String name;
     public long uniqueId;
     public int rank;
}

我将一个由十个节点对象组成的数组传递给一个本地方法:

nativeParse(nodes);

我想迭代这些对象,并从数据中创建新的c++对象,这样我的c++代码就可以使用它们。

任何帮助都将不胜感激!

假设newNodes[]是对象的C++数组,您可以尝试以下操作:

  JNIEXPORT void JNICALL nativeParse(JNIEnv *env, jint size, jobjectArray nodes)
  {
     for(int i=0; i < size; i++)
         newNodes[i]= (jobject) env->GetObjectArrayElement(nodes, i);
  }