jni之list

本文详细介绍了在JNI中如何操作Java的List对象,包括获取List的大小、遍历List中的元素以及如何调用List的get方法。通过具体的JNI函数原型和步骤解析,帮助读者理解JNI与Java对象交互的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jni 中参数是list,如何获取list的中的数据
首先通过一个例子来说明其中的原理吧
java 中的函数原型
public static native int init(List ca_list);
jni 中的函数原型
jint Java_com_test_JNIclass_init(JNIEnv *env, jobject this, jobject ca_list_obj);

首先对于jni来说List 也是一个object对象,我们需要找到List的类
jclass list_cls = (*env)->FindClass(env, “java/util/List”);
然后找到List的get方法的method id
jmethodID list_get_method = (*env)->GetMethodID(env, list_cls,
“get”, “(I)Ljava/lang/Object;”);
由于需要遍历list的item,所以需要拿到list的size,这就需要找到List的size方法
jmethodID list_size_method = (*env)->GetMethodID(env, list_cls, “size”, “()I”);
此时通过size方法拿到list的size
int list_ca_size = (*env)->CallIntMethod(env, ca_list_obj, list_size_method);
拿到size 之后,就可以逐个遍历list的链表了
int index;
for(index=0;index<list_ca_size;index++) {
jobject cert_obj = (*env)->CallObjectMethod(env, ca_list_obj, list_get_method, index);
jclass cert_cls = (jclass)(*env)->GetObjectClass(env, cert_obj);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值