jni传递对象中包含arraylist对象。
来源:互联网 发布:淘宝网哪些鞋店比较好 编辑:程序博客网 时间:2024/05/16 12:51
相信在使用jni的过程中,总是要传递各种各样的类型,在这其中,我也碰到了一些问题。
简单的传一些内容,相信在网上一搜一大把。
所以我们就来说说。传递对象中包含arraylist吧。
在这里先给大家一个连接,显示一些jni的传递:http://blog.csdn.net/u_xtian/article/details/6033963
所以,我们定义一些Java中的类
user.java
public class User{
private long id;
private boolean isMan;
}
name.java
public class People{
private int id;
private ArrayList<User> myuser;
}
public class Hello{
static{
System.loadLibrary("user");
}
public native void SetUser(People people);
}
在c语言中:
#include<jni.h>
JNIEXPORT void JNICALL Java_Hello_SetUser(JNIEnv*, jobject jthiz, jobject people);
JNIEXPORT void JNICALL Java_HelloJni_setUserList (JNIEnv *env, jobject jthiz, jobject people){
jclass peo_cls = env->GetObjectClass(people);
if(peo_cls == NULL)
{
return ;
}
jfieldID idFieldID = env->GetFieldID(peo_cls,"id","I"); //获得得People类的属性id
jint id= env->GetIntField(people, idFieldID ); //获得属性值
jfieldID codeFieldID = env->GetFieldID(peo_cls,"myuser","Ljava/util/ArrayList;");
jobject codeobj = env->GetObjectField(people, codeFieldID);
if(codeobj == NULL)
{
return ;
}
int i;
jclass cls_arraylist = env->GetObjectClass(codeobj);
//method in class ArrayList
jmethodID arraylist_get = env->GetMethodID(cls_arraylist,"get","(I)Ljava/lang/Object;");
jmethodID arraylist_size = env->GetMethodID(cls_arraylist,"size","()I");
jint len = env->CallIntMethod(codeobj,arraylist_size);
for(i=0;i<len;i++){
jobject obj_user = env->CallObjectMethod(codeobj,arraylist_get,i);
jclass cls_user = env->GetObjectClass(obj_user);
jfieldID idFieldID = env->GetFieldID(cls_user,"id","J"); // 获得属性ID
jfieldID isManFieldID = env->GetFieldID(cls_user,"isMan","Z"); // 获得属性ID
jint id= env->GetIntField(obj_user , idFieldID );//获得属性值
jboolean isMan= env->GetBooleanField(obj_user ,isManFieldID );//获得属性值
}
这样就完成了。在对象object中包含有arraylist的对象。
- jni传递对象中包含arraylist对象。
- jni对象的传递
- JNI 对象数组传递
- Android JNI 传递对象
- Android JNI 传递对象
- JNI与C++数据类型传递示例(包括ArrayList对象、ArrayList嵌套返回)
- Android中Intent传递Object和ArrayList<Object>对象---笔记
- JNI传递ArrayList
- Android Intent传递对象和ArrayList
- Android 用intent传递ArrayList对象
- Android Intent传递对象和ArrayList
- Intent传递复杂ArrayList对象(Parcelable)
- JNI传递对象的处理方法
- JNI学习1--传递java对象 demo
- JNI传递对象的处理方法
- JNI编程进阶 数据结构对象的传递
- JNI传递对象的处理方法
- JNI 函数以及复杂对象传递
- ListView的setSelection()和setSelectionFromTop()联系
- oracle存储过程
- hide developer console
- mysql优化
- CentOS下编写shell脚本自动备份数据库与网站
- jni传递对象中包含arraylist对象。
- C++中如何在一个构造函数中调用另一个构造函数
- 起步X5开发HTML5通过ajax调用WebService服务,调用的两种方式SOAP和Result
- 查看事务锁:innodb_trx + innodb_locks + innodb_lock_waits
- 欢迎使用CSDN-markdown编辑器
- android Intent Flags详解
- 图形处理(八)点云重建(上)点云滤波、尖锐特征边增采样、移除离群点
- PHP的xml操作类
- Android_Activity详解