C++ 在JNI中附加多个JString最简单的方法是什么?

C++ 在JNI中附加多个JString最简单的方法是什么?,c++,java-native-interface,C++,Java Native Interface,我正在开发一个android应用程序,我需要附加5-6个jstring,并希望在本机代码中返回一个jstring。字符串就像 jstring1= "Hello, " jstring2= "How" jstring3= "are" jstring4= "you" jstring5= "today?" 我想返回一个jstring,比如“你好,今天好吗?”我只是想知道最简单的方法。首先,您创建一个StringBuilder: jclass cls_StringBuilder = env->Fi

我正在开发一个android应用程序,我需要附加5-6个jstring,并希望在本机代码中返回一个jstring。字符串就像

jstring1= "Hello, "
jstring2= "How"
jstring3= "are"
jstring4= "you"
jstring5= "today?"

我想返回一个jstring,比如“你好,今天好吗?”我只是想知道最简单的方法。

首先,您创建一个
StringBuilder

jclass cls_StringBuilder = env->FindClass("java/lang/StringBuilder");
jmethodID ctr_StringBuilder = env->GetMethodID(cls_StringBuilder, "<init>", "(I)V");
jobject stringBuilder = env->NewObject(cls_StringBuilder, ctr_StringBuilder, 100);
最后获取StringBuilder的内容:

jmethodID mid_StringBuilder_toString = env->GetMethodID(cls_StringBuilder, "toString", "()Ljava/lang/String;");
jstring final = (jstring) env->CallObjectMethod(stringBuilder, mid_StringBuilder_toString);
return final;

如果本机没有对字符串做任何有用的操作,只需使用StringBuilder。是的,先生,我完全同意你的答案,但这是为了在本机代码中使用的目的。看起来它几乎完成了你想要的功能-唯一的区别是它们有一个jstring和一个C字符串,而你有多个jstring,但方法是一样的:非常感谢你的帮助。它还让我想到了其他问题的解决方案。它在类StringBuilder中找不到的as方法名中给出了一个错误。该构造函数应该始终存在(自Java 1.5以来)。。但我想你们可以尝试不带参数的构造函数。使用“()V”作为签名,不要将最后一个参数传递给NewObjectI我刚刚尝试使用Android studio,它刚刚编译。你能显示IDE的屏幕截图以及代码和错误吗?
jmethodID mid_StringBuilder_toString = env->GetMethodID(cls_StringBuilder, "toString", "()Ljava/lang/String;");
jstring final = (jstring) env->CallObjectMethod(stringBuilder, mid_StringBuilder_toString);
return final;