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

时间:2012-03-11 01:49:42

标签: java c++ android-ndk java-native-interface

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

例如,该对象的签名为:

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

我将一个包含十个节点对象的数组传递给本机方法:

nativeParse(nodes);

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

假设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);
  }