当前位置: 首页 > news >正文

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习(三)

本教程为native code学习笔记,希望能够帮到有需要的人

我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大

对java中的对象变量进行操作

首先我们新建一个java的类

public class ClassForJNI {public int a;public int b;public void add(){System.out.println("a+b is :"+(a+b));return;}
}

我们的目标就是更改里面的a和b,并且调用这个类,就可以看到我们的输出

//查询类名
jclass clz_2 = env->FindClass("com/example/nativecodelearn/ClassForJNI");
//查询构造函数的id
jmethodID jcmid_2 = env->GetMethodID(clz_2, "<init>", "()V");
//创建对象
jobject = env->NewObject(clz_2, jcmid_2);
jfieldID fid_a =env->GetFieldID(clz_2,"a","I");
jint num_a =env->GetIntField(jobject,fid_a);
env->SetIntField(jobject,fid_a,9);
jfieldID fid_b =env->GetFieldID(clz_2,"b","I");
jint num_b =env->GetIntField(jobject,fid_b);
env->SetIntField(jobject,fid_b,10);
//获取方法id
jmethodID jmeid_2 = env->GetMethodID(clz_2,"add","()V");
env->CallVoidMethod(jobject,jmeid_2);

其实这个步骤一共就这几步

  1. 找到类名
  2. 准备构造函数
  3. 创建对象
  4. 获得fieldID
  5. 得到对应的变量
  6. 更改变量的值

通过这样我们就可以运行了,这样就可以得到最终的结果了

20230830143015

http://www.lryc.cn/news/146931.html

相关文章:

  • 如何用bat文件调用与它在同一文件夹下的某个exe程序
  • 设计模式--单例模式(Singleton Pattern)
  • postgis数据库从一张表中过滤出一部分数据到新表中
  • INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖
  • 微信开发之一键创建标签的技术实现
  • 八一参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
  • ChatGPT⼊门到精通(7):GPT3.5与 4.0区别
  • Springboot整合MyBatisPlus框架操作MySQL
  • 基于Jenkins构建生产CICD环境(第二篇)
  • ioctl、printk及多个此设备支持
  • 电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒
  • centos服务器系统下安装python3并与自带的python2
  • (二十)大数据实战——Flume数据采集的基本案例实战
  • AutoCAD图如何保存为Word
  • Java线程 - 详解(2)
  • 事务特性 - 达梦数据库
  • axios 使用FormData格式发送GET请求
  • CS144(2023 Spring)Lab 1: stitching substrings into a byte stream
  • 【PHP】常用的PHP内置函数
  • css自学框架之消息弹框
  • 42、Flink 的table api与sql之Hive Catalog
  • PAT 1145 Hashing - Average Search Time
  • C++调用Python Win10 Miniconda虚拟环境配置
  • 从0到1学会Git(第一部分):Git的下载和初始化配置
  • 【记录】手机QQ和电脑QQ里的emoji种类有什么差异?
  • blender界面认识01
  • TCP数据报结构分析(面试重点)
  • 合并两个有序的单链表,合并之后的链表依然有序
  • eureka迁移到nacos--双服务中心注册
  • 线程池使用不规范导致线程数大以及@Async的规范使用