Wenn Sie die Dokumentation geprüft haben und noch Fragen haben, die Teil Ihrer ursprünglichen Frage sein sollten. In diesem Fall erstellt die JNI-Funktion im Beispiel eine Reihe von Arrays. Das äußere Array besteht aus einem 'Object'-Array, das mit der JNI-Funktion erstellt wird NewObjectArray()
. Aus der Sicht von JNI ist das alles, was ein zweidimensionales Array ist, ein Objektarray, das eine Reihe anderer innerer Arrays enthält.
Die folgende for-Schleife erstellt mithilfe der JNI-Funktion die inneren Arrays vom Typ int [] NewIntArray()
. Wenn Sie nur ein eindimensionales Array von Ints zurückgeben möchten, verwenden Sie die NewIntArray()
Funktion, um den Rückgabewert zu erstellen. Wenn Sie ein eindimensionales Array von Strings erstellen möchten, verwenden Sie die NewObjectArray()
Funktion, jedoch mit einem anderen Parameter für die Klasse.
Da Sie ein int-Array zurückgeben möchten, sieht Ihr Code ungefähr so aus:
JNIEXPORT jintArray JNICALL Java_ArrayTest_initIntArray(JNIEnv *env, jclass cls, int size)
{
jintArray result;
result = (*env)->NewIntArray(env, size);
if (result == NULL) {
return NULL; /* out of memory error thrown */
}
int i;
// fill a temp structure to use to populate the java int array
jint fill[size];
for (i = 0; i < size; i++) {
fill[i] = 0; // put whatever logic you want to populate the values here.
}
// move from the temp structure to the java structure
(*env)->SetIntArrayRegion(env, result, 0, size, fill);
return result;
}
Wenn jemand wissen möchte, wie er das Array String [] zurückgibt:
Java-Code
nativer Export
nativen Code
vom Link: http://www.coderanch.com/t/326467/java/java/Returning-String-array-program-Java
quelle
Basierend auf der gestellten Frage wird dies bereits in der ersten Antwort erklärt, wie wir int [] über jobjectArray übergeben können. Hier ist ein Beispiel, wie wir ein jobjectArray zurückgeben können, das Datenlisten enthält. Dies kann beispielsweise in Situationen hilfreich sein, in denen jemand Daten im 2D-Format zurückgeben muss, um eine Linie mit x- und y-Punkten zu zeichnen. Das folgende Beispiel zeigt, wie ein jobjectArray Daten in folgendem Format zurückgeben kann:
Java-Eingabe in das JNI:
Array [
Arraylist
von x Gleitkommazahlen] [Arraylist
von y Gleitkommazahlen]JNI-Ausgabe an Java:
jobjectArray
[Arraylist
von x Gleitkomma] [Arraylist
von y Gleitkomma]quelle
Eine einfache Lösung besteht darin, die Array-Daten von C in eine Datei zu schreiben und dann von Java aus auf die Datei zuzugreifen
quelle