2017-03-01 27 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); 

需要注意的是,根據該陣列是如何被使用的,您可能需要在陣列,並從它的元素轉換本地引用全局引用。