思路就是,这是一个对象,获取其中的函数后,使用for循环调用函数获取其中的数据。
代码如下:
#include <jni.h> void process_jlist(const JNIEnv *env, const jobject jlist) { if (env == NULL || jlist == NULL) { return; } jclass list_cls = env->GetObjectClass(jlist); if (list_cls == NULL) { return; } jmethodID list_get = env->GetMethodID(list_cls, "get", "(I)Ljava/lang/Object;"); jmethodID list_size = env->GetMethodID(list_cls, "size", "()I"); int len = static_cast<int>(env->CallIntMethod(jlist, list_size)); if (len == 0) { return; } for (int i=0; i < len; i++) { jstring element = (jstring)(env->CallObjectMethod(jlist, list_get, i)); if (element == NULL) { continue; } // 注意是否有其他的内存泄露 env->DeleteLocalRef(element); } //做点其他事情 }