c - 如何使用 JNI 在 C 中获取 jobject 的字符串值?

标签 c object java-native-interface

我的 jobject 看起来像 {"A", "B", 1},现在我想获取它的 String 值。

目前我有那个代码:

class clazz = (*env)->FindClass(env, "model/Spieler");
jmethodID midVorname = (*env)->GetMethodID(env, clazz, "getVorname", "()Ljava/lang/String;");
jmethodID midNachname = (*env)->GetMethodID(env, clazz, "getNachname", "()Ljava/lang/String;");
jmethodID midTrikotnummer = (*env)->GetMethodID(env, clazz, "getTrikotnummer", "()I");

char vorname[SIZE];
char nachname[SIZE];
int trikotnummer;
jobject newObj;

link = (Spieler*) malloc(sizeof(Spieler));

newObj = (*env)->GetObjectArrayElement(env, arr, i);

trikotnummer = (*env)->CallIntMethod(env, newObj, midTrikotnummer);

对于 Integer,它的工作方式与上面类似,但我不知道如何通过 jmethodID 获取 String 值。
你有什么建议吗?

最佳答案

你可以尝试这样的事情:

/* Access the i-th element in the array */
jobject obj  = (*env)->GetObjectArrayElement(env, arr, i);

/* Call the method */
jobject resultString = (*env)->CallObjectMethod(env, obj, /* method ID */ midVorname);

/* Get a C-style string */
const char* str = (*env)->GetStringUTFChars(env, (jstring) resultString, NULL);

/* Use the string ... */

/* Clean up */
(*env)->ReleaseStringUTFChars(env, resultString, str);

关于c - 如何使用 JNI 在 C 中获取 jobject 的字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40016483/

相关文章:

c - 如何在 C 中使用二维指针数组来存储字符串?

c - 我的平方根代码有什么问题?

javascript - For/In 循环对象到数组

android - 如何在 Android 上进行非阻塞事件处理?

java - 在 JNI 下以 native 代码获取 java 缓冲区的最有效方法是什么?

c - 如何以编程方式确定我们当前运行的操作系统是否支持 Windows 错误报告?

c - 在 C 中返回动态分配的结构时出现未处理的异常

javascript - 无法在 JavaScript 中复制对象属性

ruby - 不同对象的实例变量都被改变

java - AWS Lambda/JNI - 尝试使其与嵌入式 native 文件一起使用