PLC
登录
直播中
蒲泛粟
7年用户
954经验值
私信
关注
JNI中类的传递
开启该帖子的消息推送
Android
JNI
编码
怎样去创建JNI中要传递的类?从JNI中得到返回类的信息是什么?
回帖
(1)
陈桂英
2021-9-30 17:17:58
JNI中类的传递
上面说了一大篇,正篇我们马上开始。
首先创建我们要传递的类
public class CProduct
{
public CProduct()
{
incod;
fnam;
price=0;
qty=0;
}
//商品编码 public String incode;
//商品名称 public String fname;
//价格 public float price;
//数量 public int qty;
}
从JNI中得到返回类的信息
我们在VaccaeJNI的类中加入一个静态方法getproduct;
//获取产品信息
public native static CProduct getproduct();
然后按ALT+ENTER让其在native-lib.cpp中自动生成对应的方法
生成返回类的步骤:
用FindClass获取到我们的CProduct类
用GetFieldID来定义类CProduct里面的属性信息
实例化我们的类
通过SetXXXXXField的方法全各个属性赋值
返回类信息
extern “C”
JNIEXPORT jobject JNICALL
Java_dem_vac_vaccaendk_VaccaeJNI_getproduct(JNIEnv *env, jclass type) {
//首先获取class
jclass jcls = env-》FindClass(“dem/vac/vaccaendk/CProduct”);
if (jcls == NULL) {
return 0;
}
//定义类里面的属性
jfieldID incode = env-》GetFieldID(jcls, “incode”, “Ljava/lang/String;”);
jfieldID fname = env-》GetFieldID(jcls, “fname”, “Ljava/lang/String;”);
jfieldID price = env-》GetFieldID(jcls, “price”, “F”);
jfieldID qty = env-》GetFieldID(jcls, “qty”, “I”);
//首先实例化类
jobject jobj = env-》AllocObject(jcls);
//然后对类中的各属性赋值
//商品编码
env-》SetObjectField(jobj, incode, env-》NewStringUTF(“000001”));
//商品名称
env-》SetObjectField(jobj, fname, env-》NewStringUTF(“康师傅方便面”));
//价格
env-》SetFloatField(jobj, price, 6.5);
//数量
env-》SetIntField(jobj, qty, 10);
//输出
return jobj;
}
然后我们在按钮事件里面写入调用的这个方法并显示出来
看一下运行效果
JNI中类的传递
上面说了一大篇,正篇我们马上开始。
首先创建我们要传递的类
public class CProduct
{
public CProduct()
{
incod;
fnam;
price=0;
qty=0;
}
//商品编码 public String incode;
//商品名称 public String fname;
//价格 public float price;
//数量 public int qty;
}
从JNI中得到返回类的信息
我们在VaccaeJNI的类中加入一个静态方法getproduct;
//获取产品信息
public native static CProduct getproduct();
然后按ALT+ENTER让其在native-lib.cpp中自动生成对应的方法
生成返回类的步骤:
用FindClass获取到我们的CProduct类
用GetFieldID来定义类CProduct里面的属性信息
实例化我们的类
通过SetXXXXXField的方法全各个属性赋值
返回类信息
extern “C”
JNIEXPORT jobject JNICALL
Java_dem_vac_vaccaendk_VaccaeJNI_getproduct(JNIEnv *env, jclass type) {
//首先获取class
jclass jcls = env-》FindClass(“dem/vac/vaccaendk/CProduct”);
if (jcls == NULL) {
return 0;
}
//定义类里面的属性
jfieldID incode = env-》GetFieldID(jcls, “incode”, “Ljava/lang/String;”);
jfieldID fname = env-》GetFieldID(jcls, “fname”, “Ljava/lang/String;”);
jfieldID price = env-》GetFieldID(jcls, “price”, “F”);
jfieldID qty = env-》GetFieldID(jcls, “qty”, “I”);
//首先实例化类
jobject jobj = env-》AllocObject(jcls);
//然后对类中的各属性赋值
//商品编码
env-》SetObjectField(jobj, incode, env-》NewStringUTF(“000001”));
//商品名称
env-》SetObjectField(jobj, fname, env-》NewStringUTF(“康师傅方便面”));
//价格
env-》SetFloatField(jobj, price, 6.5);
//数量
env-》SetIntField(jobj, qty, 10);
//输出
return jobj;
}
然后我们在按钮事件里面写入调用的这个方法并显示出来
看一下运行效果
举报
更多回帖
rotate(-90deg);
回复
相关问答
Android
JNI
编码
JNI
中
List结构的
类
数据是怎样返回的
2021-10-08
1212
JNI
是什么?如何配置
JNI
环境?
2022-03-02
500
基于
JNI
的嵌入式手机软件该如何去设计?
2021-04-23
896
在鸿蒙的Module中使用了
JNI
无法调试代码
中
的C++是为什么
2022-04-24
3722
逻辑运算
类
指令有哪些? 数据
传递
类
指令有哪些?
2021-10-13
840
帮助
中
说是选择输出的
类
请问这个
类
是什么意思?
2013-10-30
1904
求助大神,父
类
无法
传递
信息给子类
2024-04-12
4966
JNI
如何实现Android stdio IIC与从机通信的呢
2022-03-04
1078
类
成员函数
中
const的使用,有什么注意事项?
2021-04-26
1210
jni
:关于native的需要
传递
两个以上结果的函数如何实现
2015-03-05
2676
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分