学习android JNI的那些事儿--------7. 在JNI中创建java类对象

JNI创建java对象 这是我用于测试,主要用于jni创建java对象病操作 立即下载

on_jniload

学习android JNI的那些事儿--------7. 在JNI中创建java类对象

分类: Android C++ JNI   1688人阅读  评论(3)  收藏  举报

之前我们介绍过在jni中调用java中的成员函数,这里我们来介绍下载jni中创建java中的类对象,其实跟之前一样就是调用java类中的构造函数。

我们在之前的例子的前提下修改一个带参数的构造函数,然后再main activety中使用native code去new一个class对象,在jni中调用构造函数传入参数去给类的成员变量赋值,最后打印出log。

-------------------------------------------------------------

先看下构造函数:

[java]  view plain copy
  1. public class Student {  
  2.     private String name;  
  3.     private int number;  
  4.     Student(int num, String string){  
  5.         name = string;  
  6.         number = num;  
  7.     }  

在按下button的时候新建一个class 对象:

[java]  view plain copy
  1.         public void onClick(View v) {  
  2.             if(v.getId() == R.id.button1 ){  
  3. //              accessInstanceMethod("Instance Method Call");  
  4. //              student=doWithObj(student);  
  5. //              tv.setText("name:"+student.getName()+", number:"+student.getNumber());  
  6.                 Student student = createObj();  
  7.                 System.out.println( "name: "+student.getName()+", number: "+student.getNumber());  
  8.             }  

最后看下在jni中是如何做的:

[cpp]  view plain copy
  1. jobject  
  2. Java_com_android_jni_MyJNI_createObj(JNIEnv *env,jobject jobj)  
  3. {  
  4.     jobject student = NULL;  
  5.     jclass student_cls = (*env)->FindClass(env,  
  6.             "com/android/jni/Student");  
  7.     if(student_cls == NULL)  
  8.         return NULL; //can not find class Studnet  
  9.     jmethodID student_mtd = (*env)->GetMethodID(env,student_cls,"<init>",  
  10.             "(ILjava/lang/String;)V");  
  11.     if(student_mtd == NULL)  
  12.         return NULL;  
  13.     jstring jstr = (*env)->NewStringUTF(env,"[Jay]");  
  14.     student = (*env)->NewObject(env,student_cls,student_mtd,10,jstr);  
  15.     (*env)->DeleteLocalRef(env,jstr);  
  16.     return student;  
  17. }  

很简单,就是调用了NewObect来新建一个对象,之前需要FindClass,然后得到构造函数的methodID。

之后运行模拟器,使用logcat查看打印出来的消息。

http://blog.youkuaiyun.com/vv0_0vv/article/details/7306205

二极管限幅电路和钳位电路 二极管限幅电路和钳位电路学习 阅读详情

相关推荐

别再为H5扫码头疼了!用Vue3 + vue-qrcode-reader,5分钟搞定移动端摄像头调用(附完整代码)

本文详细介绍了如何使用Vue3和vue-qrcode-reader快速实现移动端扫码功能,解决H5开发中常见的摄像头调用和兼容性问题。通过完整的代码示例和优化技巧,帮助开发者高效集成二维码识别功能,提升用户体验和开发效率。

weixin_33737134的博客 513

Android NDK之----- 在jni中创建java类对象

如果想要在jni函数创建java类对象则要引用java 类的构造器方法,通过调用NewObject函数来实现。  NewObject函数的调用方式为:  jobject obj_new = (*env)->NewObject(env,class, methodid, paraments);  在该实例中,我们在java/Test.java 中定义了Book1类,要在CreateObj类的mo

GG之家 5216

别再乱改grub.cfg了!手把手教你用GRUB2自定义多系统启动菜单(含UEFI/BIOS双模式配置)

本文详细介绍了如何安全、高效地使用GRUB2自定义多系统启动菜单,涵盖UEFI/BIOS双模式配置。通过避免直接编辑grub.cfg文件,采用正确的配置方法和命令,帮助用户打造稳定且美观的启动环境,特别适合Linux多系统用户和开发者。

weixin_42553471的博客 590

JNI 中创建对象

JNI 中创建对象 在上一篇中介绍了JNI 调用Java中的super.method()。本文是JNI系列的第九篇,介绍JNI中的如何在Native代码中创建Java对象。 系列文章的大纲如下: JNI 简介 JNI 基本类型 JNI String JNI 数组 JNI 实例变量 JNI 静态变量 JNI 回调实例方法与静态方法 JNI 调用Java中的super.method() JNI 中创建对象 JNI 中创建对象数组 JNI 中局部引用和全局引用 JNI 动态注册 使用Android NDK编译A

枫竹梦 2285

青藏高原冻土数据实战:如何用QGIS分析1961-2020年冻土退化趋势(附完整操作步骤)

本文详细介绍了如何使用QGIS分析1961-2020年青藏高原冻土退化趋势,包括数据准备、预处理、时空分析和模型验证等全流程操作。通过TTOP模型和Stefan方程,揭示了冻土退化的空间差异和海拔依赖性,为环境研究提供科学依据。

weixin_29276847的博客 127

西安交通大学SQ轴承数据集(文末附数据)

西安交通大学SQ轴承数据集

qq_43271683的博客 1万+

Android NDK开发(九):JNI函数接口详解—本地层使用java类及实例

通过JNI层,本地层可间接操作java 类和实例的属性和方法,包括实例化类、set/get属性值、调用方法等。由于涉及的接口比较多,我们按功能进行分类说明。

u04160526 2357

瑞萨芯片串口配置,基于RL78芯片的串口使用配置

在这里隆重给大家介绍瑞萨编辑器CS+ for CA 的自动生成代码功能,只需要配置几个参数,就可以得到你想要的串口配置了,我现在已经忘记怎么手动配置寄存器了,哈哈。选择设置,此时将端口设置成功接下来设置时钟,根据自己的芯片所需设置相应的时钟,自己芯片是什么时钟查看数据手册和原理图可以找到。瑞萨芯片的串口配置其实和ST芯片的串口配置差不多,只是ST芯片的中文数据手册比较多,就更好配置了,找到所需要的串口配置IO口,此时将UART0 配置为引脚P61和P62,瑞萨芯片的串口配置竟然要配置串口。

qq_45315904的博客 4302

java学习之JNI 学习四 创建JAVA对象

在c/c++本地代码中创建Java对象      1,使用函数NewObject可以用来创建JAVA对象;          GetMethodID 能够取得构造方法的jmethodID, 如果传入的要取得的方法名称设为""就能够取得构造方法         构造方法的方法返回值类型的签名始终为void         例:         jclass clazz_dat

v1v1wang的专栏 1万+

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5025

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

JNI完全指南(四)——对象操作

JNI完全指南(四)——对象操作标签(空格分隔):JNI完全指南版本:1 作者:陈小默 声明:禁止商业,禁止转载 发布于:作业部落、简书、[优快云博客]前一篇:JNI完全指南(三)——引用类型JNI完全指南四对象操作 四对象操作 1 基本操作 11 创建默认对象 12 创建对象 13 从对象获取类信息 14 获取一个对象的引用类型 15 实例运算 16 判断对象是否相同 2 访问对象中的属性 21

陈小默的博客 5169

智能车图像处理22-进阶篇14--小s的判断

这篇文章中主要讲述智能车图像处理中 : 小s的判断方法。

taiyuezyh的博客 2566

Android中JNI编程的那些事儿

Android中JNI编程的那些事儿 首先说明,Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须是通过Java代码嵌入Native C/C++——即通过JNI的方式来使用本地(Native)代码。因此JNI对Android底层开发人员非常重要。   将.

vincew的专栏 1201

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

史上最适合新手的安卓JNI教程

码字辛苦!转载请注明出处! 0.前言 记得第一次接触安卓JNI的时候,那叫一个苦啊,MK文件?不会写,JNI?不会写,Gradle配置?也不会写。 时间一晃就过去3年了,Android Studio已经由当时的1.3到了现在的3.1,最新版本的Android Studio,再也不用手写MK文件,手写JNI了~ 只要你熟练掌握JAVA和C语言基础,十分钟拿下JNI,完全不是问题! 那些上来...

不会前端的安卓不是好JAVA工程师 8638

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

(转)Android中JNI编程的那些事儿

Android中JNI编程的那些事儿 首先说明,Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须是通过Java代码嵌入Native C/C++——即通过JNI的方式来使用本地(Native)代码。因此JNI对Android底层开发人员非常重要。 如何将.so文件打包到.APK 让我们先从最简单的情况开始,假如已有一个JNI实现——libxxx.so文件,那么如何在...

weixin_30725467的博客 95

Java jni 开发

1. Android之从零开始JNI研发Android NDK开发:JNI基础篇2. Android NDK开发:JNI基础篇3. 呕心沥血Android studio使用JNI实例4. Android JNI初步☞Java方法和native方法关联 (静态注册和动态注册)5. Android JNI实现简单的c层调用Java层函数(C层调用Java层Toast进行提示)简记JNIEnv 是一个指...

dzning123的专栏 604
上一篇: java中Keytool的使用总结
下一篇: Android APK反编译详解(附图)
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值