我的 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/