4

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

谢谢

4

1 回答 1

3

对的,这是可能的。这里有一个示例可以完全满足您的要求。new String(char[])您将需要在 java 中从 JNI 端(类似于 invoking )创建数组和字符串。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);
}
于 2013-02-23T13:32:05.547 回答