在JNI层中填充字符串数组

时间:2013-02-23 13:23:00

标签: java java-native-interface

我是Java编程的新手并且有一个基本问题。我想将一个字符串数组传递给JNI层。在JNI函数内部可以用字符串填充数组吗?所有帖子都讨论了如何从JNI层返回字符串数组或如何解析JNI层中的字符串数组。有可能吗?

由于

1 个答案:

答案 0 :(得分:2)

是的,有可能。有example here可以完全满足您的需求。您需要在java中创建JNI端的数组和字符串(类似于调用new String(char[]))。支持Unicode和UTF-8(每个都设置了一个JNI函数)。

#include <jni.h>
#include "ArrayHandler.h"

JNIEXPORT jobjectArray JNICALL Java_ArrayHandler_returnArray
  (JNIEnv *env, jobject jobj)
{
    jobjectArray ret;
    int i;

    char *message[5]= {"first",
                       "second",
                       "third",
                       "fourth",
                       "fifth"};

    ret= (jobjectArray)env->NewObjectArray(5,
                                           env->FindClass("java/lang/String"),
                                           env->NewStringUTF(""));

    for(i=0;i<5;i++) {
        env->SetObjectArrayElement(
                    ret,i,env->NewStringUTF(message[i]));
    }

    return(ret);
}