返回一个字符串数组在JNI方法 [英] Return a String array on a JNI method
本文介绍了返回一个字符串数组在JNI方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要得到字符串(字符*)从C ++的名单,并将其返回到Java。
I need to get a List of Strings (char*) from C++ and return it to Java.
我怎么能这样做?
我想其中一个解决方案是返回一个大的字符串pre-定义如下:[ITEM1] [项目2],并就Java的分裂,但它并不像正确的方法
I think one solution is return a big string pre-defined like: "[item1][item2]" and make a split on Java, but it doesn't look like the right approach.
推荐答案
看 NewObjectArray
进入JNI文档。
基本上你可以从JNI返回函数的字符串(Java)的数组中,然后将其转换在列表
或任何类型的集合类型。
Basically you can return from the JNI function an Array Of String (Java) an then transform it in a List
or a whatever kind of Collection type.
Peudo code:
Peudo code:
Java的:
....
public List<String> getFooAsList(){
return new ArrayList(this.getData());
}
private native String[] getData();
JNI
#include <jni.h>
JNIEXPORT jobjectArray JNICALL
como_foo_bar_getData
(JNIEnv *env, jobject jobj){
jobjectArray ret;
int i;
char *data[5]= {"A", "B", "C", "D", "E"};
ret= (jobjectArray)env->NewObjectArray(5,env->FindClass("java/lang/String"),env->NewStringUTF(""));
for(i=0;i<5;i++) env->SetObjectArrayElement(ret,i,env->NewStringUTF(data[i]));
return(ret);
}
未测试!
让我知道,如果它适用于U
Let me know if it works for u
问候
这篇关于返回一个字符串数组在JNI方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文