1,关于java端类及接口定义请参考:

  android NDK 实用学习-获取java端类及其类变量

2,对传过来的参数进行赋值:

  • 对bool类型成员进行赋值

     env->SetBooleanField(jobj, jfbdata, false);

  • 对double类型成员进行赋值

env->SetDoubleField(jobj, jfddata, 209.22);

  • 对int类型成员进行赋值

env->SetIntField(jobj, jfidata, );

  • 对byte类型成员进行赋值

env->SetByteField(jobj, jfcdata, );

  • 对String类型进行赋值

char data[] = ""; env->SetObjectField(jobj, jfsdata, env->NewStringUTF(data));

  • 对基本类型数组类型进行赋值
    // 获取Java中Int数组赋值
jintArray jint_arr = (jintArray)env->GetObjectField(jobj, jiarr);
int arrInt[] = {};
for(int i = ; i < ; ++i){
arrInt[i] = +i;
}
env->SetIntArrayRegion(jint_arr, , , arrInt); // 获取Java中byte数组赋值
jfieldID jbyteArr = env->GetFieldID(jcSetDataMgr, "byteArr", "[B");
char arrByte[] = "";
jbyteArray jbyte_arr = (jbyteArray)env->GetObjectField(jobj, jbyteArr);
env->SetByteArrayRegion(jbyte_arr, , , (const signed char*)arrByte);

3,获取成员变量值:

  • 获取bool类型成员变量值
bool bData = env->GetBooleanField(jcSetDataMgr, jfbdata);
  • 获取double类型成员变量值
double dData = env->GetDoubleField(jcSetDataMgr, jfddata);
  • 获取int类型成员变量值
int iData = env->GetIntField(jcSetDataMgr, jfidata);
  • 获取byte类型成员变量值
char cData = env->GetByteField(jcSetDataMgr, jfcdata);
  • 获取String成员变量值
 jfieldID jfsdata = env->GetFieldID(jcSetDataMgr, "sData", "Ljava/lang/String;");
jstring jtestStr = (jstring)(env->GetObjectField(jcSetDataMgr, jfsdata));
const char* testStr = env->GetStringUTFChars(jtestStr, NULL);
char testData[] = {};
strcpy(testData, testStr);
env->ReleaseStringUTFChars(jtestStr, testStr);
  • 获取基本类型数组成员变量值
     jfieldID jiarr = env->GetFieldID(jcSetDataMgr, "intArr", "[I");
if(NULL == jiarr){
DEBUG_OUT("jfbdata fail!");
} // 获取Java中数组属性arrays的对象
jintArray jint_arr = (jintArray)env->GetObjectField(jobj, jiarr); int arrInt[] = {};
for(int i = ; i < ; ++i){
arrInt[i] = +i;
}
env->GetIntArrayRegion(jint_arr, , , arrInt);

4,关于类中包含类的可以依次类推,如有用到,以后后续完善!

android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值的更多相关文章

  1. android NDK 实用学习(三)- java端类对象的构造及使用

    1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ...

  2. android NDK 实用学习(五)-c++端调用java接口

    1,阅读此文章前请阅读前面文章,以免阅读出现障碍: android NDK 实用学习(一)-获取java端类及其类变量 android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值 ...

  3. android NDK 实用学习(一)-获取java端类及其类变量

    近期为android 端项目包装一些c++代码,故学习ndk相关知识,现总结如下: 1,java与c++类型参照图: 2,此测试中使用的java类: package com.dasea.test.co ...

  4. android NDK 实用学习(四)-类缓存

    1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ h ...

  5. 二、Android NDK编程预备之Java jni入门Hello World

    转自:  http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695 昨天已经简要介绍了J ...

  6. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

    原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...

  7. 一、Android NDK编程预备之Java jni简介

    转自:  http://www.eoeandroid.com/thread-264384-1-1.html 游戏开发 视频教程 博客 淘帖     论坛›eoe·Android应用开发区›Androi ...

  8. 三、Android NDK编程预备之Java jni入门创建C/C++共享库

    转自: http://www.eoeandroid.com/thread-264971-1-1.html 应网友回复,答应在两天前要出一篇创建C/C++共享库的,但由于清明节假期,跟朋友出去游玩,丢手 ...

  9. Android NDK开发 JNI操作java构造方法,普通方法,静态方法(七)

    Android NDK开发 JNI操作java普通.静态.构造方法 1.Jni实例化一个Java类的实例jobject 1.通过FindClas( ),获取Java类的的jclass 2.通过GetM ...

随机推荐

  1. jquery判断对象是否获得焦点

    var isFocus=$("#tRow").is(":focus"); if(true==isFocus){ alert("focus") ...

  2. [转载]jquery tmpl使用方法

    动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等. 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在 ...

  3. notepad++ 开启/关闭 记住最后打开的文件

    开启记住最后打开的文件 1) 6.3以前版本如下设置: 设置-->首选项-->其他 把左下角的 "记住最后打开文件" 勾选. 2) 6.3以后版本如下设置: 设置--& ...

  4. Flask, Tornado, GEvent, 以及它们的结合的性能比较

    Flask, Tornado, GEvent, 以及它们的结合的性能比较 英文: http://blog.wensheng.com/2011/10/performance-of-flask-torna ...

  5. eclipse安装Log4E插件以及简单使用

    一. Log4E插件下载 下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[d ...

  6. POJ 1879 Tempus et mobilius Time and motion 队列和栈

    很简单的队列和栈的应用,不过读明白题意非常重要:(直接引用白书的题解)三个轨道,一个库.分别是分钟单位的轨道,5min单位的轨道,一小时单位的轨道,还有就是n容量的库.每过一分钟,一个小球从库里面出来 ...

  7. WM_ACTIVATE

    参数: fActive  = LOWORD(wParam);   // activation flag fMinimized = (BOOL)HIWORD(wParam); // minimized ...

  8. R语言学习笔记:生成序列(Genenrating Sequences)

    R提供了多种生成不同类型序列的方法.如: > x<-1:20 > x [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 1 ...

  9. 比nerdtree更好的文件浏览器:vimfiler

    通过:VimFilerExplorer来打开一个文件浏览器 h:收起 t:展开 -:close 回车:进入或展开 空格:收起

  10. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...