C代码调用Java代码
2024-08-30 13:19:11
C代码调用Java代码应用场景
- 复用已经存在的java代码
- c语言需要给java一些通知
- c代码不方便实现的逻辑(界面)
反射
//1.加载类字节码
Class clazz = Demo.class.getClassLoader().loadClass("com.example.Dialog");
//2.获取方法
Method method = clazz.getDeclaredMethod("showDialog",String.class);
//3.调用方法
method.invoke(clazz.newInstance(), "德玛西亚");C代码调Java代码步骤
//1. 加载字节码
//jclass (*FindClass)(JNIEnv*, const char*);
jclass clazz = (*env)->FindClass(env, "cn/loaderman/ccalljava/MainActivity");
//2. 获取方法id
//方法签名:唯一确定一个方法 javap -s 包名.类名
//在bin/class目录中调用命令行
//jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
jmethodID methodId = (*env)->GetMethodID(env, clazz, "showDialog", "(Ljava/lang/String;)V");
//3. 调用方法
//void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
(*env)->CallVoidMethod(env, thiz, methodId, (*env)->NewStringUTF(env, "德玛西亚,人在塔在"));
最新文章
- Drools 函数学习
- Oracle 数据库基础学习 (七) SQL语句综合练习
- JAVA 之print,printf,println
- poj 2528
- Android MMS 之APN
- NSAssert的使用
- AC日记——石子归并 codevs 1048
- 移动端<;head>;头部 常用<;meta>;标签
- AFNetworking框架使用
- poj 1987 树的分治
- 与wait for a undo record相关的系统卡死
- mysql导入数据大小设置方法
- jquery的2.0.3版本源码系列(6):2880-3042行,回调对象,对函数的统一管理
- two.js之实现动画效果
- States字段的使用规范
- BCryptPasswordEncoder加密及判断密码是否相同
- (1)Deep Learning之感知器
- 【SAP HANA】SAP HANA开篇(1)
- 关于asp.net执行exe程序时权限不够的解决办法(2015.04.17更新)
- 东软实习<;3>;