• 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, "德玛西亚,人在塔在"));
     

最新文章

  1. Drools 函数学习
  2. Oracle 数据库基础学习 (七) SQL语句综合练习
  3. JAVA 之print,printf,println
  4. poj 2528
  5. Android MMS 之APN
  6. NSAssert的使用
  7. AC日记——石子归并 codevs 1048
  8. 移动端<head>头部 常用<meta>标签
  9. AFNetworking框架使用
  10. poj 1987 树的分治
  11. 与wait for a undo record相关的系统卡死
  12. mysql导入数据大小设置方法
  13. jquery的2.0.3版本源码系列(6):2880-3042行,回调对象,对函数的统一管理
  14. two.js之实现动画效果
  15. States字段的使用规范
  16. BCryptPasswordEncoder加密及判断密码是否相同
  17. (1)Deep Learning之感知器
  18. 【SAP HANA】SAP HANA开篇(1)
  19. 关于asp.net执行exe程序时权限不够的解决办法(2015.04.17更新)
  20. 东软实习<3>

热门文章

  1. Linux 下幾種網芳/Samba 目錄的 mount 方式
  2. (备忘)openssl的证书格式转换
  3. struct:二进制数据结构的打包与解包
  4. spring-02
  5. 海康RTSP取流URL格式
  6. err:LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLE
  7. 小程序+tgit
  8. (四) 结构化查询语言SQL——2
  9. sysbench运行autogen.sh报错
  10. Ubuntu 安装openmpi