jni访问java成员
来源:互联网 发布:技校 程序员 编辑:程序博客网 时间:2024/06/14 00:15
访问非静态域(域=成员)
例如:现在要在C中访问一个java文件中的string变量key
public String key;
可以自定义jni在C上的接口java_类名_native名称
首先非静态获取jclass
jclass jclz = (*env)->GetObjectClass(env,jobj);
获取key属性的id
java jni中给每一个field定义的一个ID
三个参数:属性名称。属性签名。访问域
例如:
jfieldID fid = (*env)->GetFieldID(env,"key","Ljava/lang/String")
如果对象为static需要改成>GetStaticField
拿到key对应的值
GET***Field
jstring jstr = (*env)->GetObjectField(env,jobj,fid);
把jstr转换为C中的char *
char * c_str = (*env)->GetStringUTFChars(env,jstr.NULL)
生成新的字符串
再次转换回jstring
jstring new_str = (*env)->NewStringUTF(env,c_str);
放回java
(*env)->setObjectField(env,jobj,fildId,new_str);
释放申请的空间,char,和jstring
(*env)->ReleaseStringChars(env,new_str,c_str)
jint类型 = int,因此不需要像String那样转换C/C++可以识别的类型,可以直接对jint进行操作
例如
jint sum ;sum = 10 ;
其它数据类型一样
阅读全文
0 0
- jni访问java成员
- Adnroid ndk 中jni访问java方法、对象、成员变量
- 王学岗jni——c访问java成员
- JNI之C代码访问java中的成员和java调C
- jni访问java方法
- java成员访问权限
- java 成员访问级别
- JNI-Java访问C库
- JNI访问Java数组方法
- 【JAVA】1.访问成员类
- java 反射访问成员属性
- java的成员访问控制
- java 反射,访问成员变量
- JAVA成员的访问控制(成员访问修饰符)
- 【JAVA】java类成员的访问控制
- Jni访问java的属性,方法
- Android下Java通过JNI访问硬件
- JNI中反向访问Java对象
- 1062:蟠桃记
- 一.Linux系统启动
- Linux下解决MySQL中文无法储存的问题
- Androidnote-安卓手记
- 数据库-mysql(三)
- jni访问java成员
- yii2 常用组件 -- 按钮组(ButtonGroup)
- 类模板
- 快速排序
- 如何解决ubuntu输入中文时出现[Invalid UTF-8]
- LeetCode: -Dynamic Programming-House Robber[198]
- 固定表头带滚动条的HTML表格
- 系统学习ARM之三 --load/store指令--装载和存储指令
- Selenium之等待函数--强制等待,显示等待,隐式等待