jni传递对象中包含arraylist对象。
相信在使用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对象。的更多相关文章
- queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候
我们知道我们可以使用dbutil的QueryRunner下的query方法使用BeanHandler得到bean对象 但是,当我们在一个表和另一个表关联的时候,往往喜欢将另一个表的关联字段变成另一个b ...
- C# json对象中包含数组对象时,如何存入数据库
前端创建的的对象例如: C#端这样将数组提取出来存入
- spring MVC中传递的参数对象中包含list的情况
测试需要的jar包:spring 3.2.jar + jackson-all-1.8.5.jar. 写代码时碰到个需要将对象里的子明细一起传递到controller里去,当时就想直接将参数一起传递过 ...
- QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。
关于 slot传递 Mat 对象 以前一直是使用 Qtimer 定时器,设定超时后读取 dialog 对象的 Mat成员实现在 UI 里显示图像,发现这样对以后集成其他面向过程的代码增加了复杂度. 所 ...
- 【ASP.NET】DataContract序列化,反序列化对象中包含用接口声明的属性时的处理方法
为此对象添加KnownType属性(Attribute).类型为用接口声明的属性(Property)的所有可能类型. 示例如下: public interface IKey { [DataMembe ...
- 【web开发问题】HTTP请求POSTDATA中包含多层对象如何获取?
postdata如下: TravelerID=&ChineseName=***&PhoneNumber=&IDNumber=&IsCommonUse=&Gues ...
- java后端接收前端传来的复杂对象(包含List对象集合)
最近在和安卓对接口的时候发现往java后端传数据的时候,后台对象无法接收. 说明:后台对象为 类似结构 ObjectA{ private String a; private String b; pr ...
- post 传递参数中包含 html 代码解决办法,js加密,.net解密
今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式 ...
- js传递参数中包含+号时的处理方法
encodeURI(url).replace(/\+/g, '%2B') 例子: $scope.getAnesthesiawaystatistical = function (annual, anes ...
随机推荐
- npm API文档
npm API文档 https://docs.npmjs.com/
- hdu 3449 Consumer (依赖01背包)
题目: 链接:pid=3449">点击打开链接 题意: 思路: dp[i][j]表示前i个箱子装j钱的材料可以得到的最大价值. 代码: #include<iostream> ...
- [debug]重定义默认參数
编敲代码过程中遇到重定义默认參数的错误,例如以下例所看到的: #include<iostream> #include<stdlib.h> using namespace std ...
- javascript系列-class2.javascript 基本使用
欢迎加入前端交流群来py: 转载请标明出处! 逻辑运算 一门计算机语言,编程的核心在于逻辑思想,当我们在编写程序的时候,逻辑是否通顺,是能否正确写出程序的关键,可以说如 ...
- A. Amr and Music
解题思路:给出n种乐器学习所需要的时间,以及总共的天数, 问最多能够学多少门乐器,并且输出这几门乐器在原序列中的序号(不唯一) 按照升序排序,为了学到最多的乐器,肯定要选择花费时间最少的来学习 然后用 ...
- 常用类Object,String类详解
-------------------- String -----------------------1.求字符串长度 public int length()//返回该字符串的长度 String st ...
- .startsWith和endsWith的使用方法与说明
a.startsWith(b) --判断字符串a,是不是以字符串b开头 a.endsWith(b) --判断字符串a,是不是以字符串b结尾
- MFC基础知识
1.句柄:具有内存后,系统返回的标识符 2.消息:相当于事件,例如鼠标点击就是一个消息 3.消息队列:就是将事件按照时间的先后顺序在一个队列中 4.消息处理机制:首先操作系统拿到消息,然后将消息放到消 ...
- luogu P1405 苦恼的小明(欧拉定理)
题意 求a1^a2^a3^...^an(mod10007)n<=1000000,a[i]<=10000 题解 明眼人一眼就可以看出是欧拉定理的推论. 首先这个题是错的,没说保证互质. 然而 ...
- 拓展Lucas小结
拓展Lucas是解决大组合数取模非质数(尤其是含平方因子的合数)问题的有力工具... 首先对模数质因数分解,把每个质因子单独拎出来处理答案,然后用中国剩余定理(excrt)合并 问题转化为,对于每个质 ...