2017-03-01 66 views
0

我必须将一个Class []从jni传递给java。 我在下面我的本地代码创建一个数组,如何在JNI中创建Class []

array = (*env)->NewObjectArray(env, 10, (*env)->FindClass(env, "java/lang/Class"), NULL); 

我需要插入,整数[]类和Integer.TYPE到这个阵列,在我的java程序接受它。如何使用SetObjectArrayElement()将元素插入到jni层的数组中。

回答

0

像这样的东西(我现在用的是更紧凑的C++ JNI调用):

jclass classClass = env->FindClass("java/lang/Class"); 
jclass intClass = env->FindClass("java/lang/Integer"); 
jclass intArrayClass = env->FindClass("[java/lang/Integer"; 
jfieldID fid = env->GetFieldID(intClass, "TYPE"); 
jclass intTypeClass = (jclass)env->GetStaticObjectField(intClass, fid); 
jobjectArray array = env->NewObjectArray(2, classClass, 0); 
env->SetObjectArrayElement(array, 0, intTypeClass); 
env->SetObjectArrayElement(array, 1, intArrayClass); 

需要注意的是,根据该阵列是如何被使用的,您可能需要在阵列,并从它的元素转换本地引用全局引用。