2017-03-01 8 views
0

jniからjavaにClass []を渡す必要があります。 は、私は、この配列に、整数[]。クラスとInteger.TYPEのを挿入して、私のJavaプログラムでそれを受信する必要がJNIでクラス[]を作成する方法

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

、以下のように私のネイティブコードで配列を作成します。

public int Sample(Class[] cls){ 
    //some code 
} 

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); 

注意グローバル参照へのローカル参照。

関連する問題