您当前的位置: 首页 > 

JNI中访问JList的代码

柳鲲鹏 发布时间:2019-08-19 08:48:54 ,浏览量:0

思路就是,这是一个对象,获取其中的函数后,使用for循环调用函数获取其中的数据。

代码如下:

#include 

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(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);
  }

  //做点其他事情
}

 

关注
打赏
1688896170
查看更多评论

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0815s