既然Java层通过Native方法可以调用C代码,那么其实C代码也是可以调用Java代码的,JNI封装了一系列方法来达到调用java的目的,主要有以下几种常见场景:
- 读取设置成员属性;
- 读取设置静态属性;
- 调用Java成员方法;
- 调用Java静态方法;
1.读取设置成员属性
这部分还是直接上代码了,注释都很清楚,后续文章会把JNI的常用函数列举出来,在这里就不一一解释了。
Java层代码
1 | private String str = "成员属性"; |
Native层代码实现
1 | //设置成员属性 |
2.读取设置静态属性
Java层代码
1 | private static String static_str= "静态属性"; |
Native层代码实现
1 | //设置静态属性 |
3.调用Java成员方法
Java层代码
1 | private int sum(int a, int b) { |
Native层代码实现
1 | //调用成员方法 |
4.调用Java静态方法
Java层代码
1 | private static int diff(int a, int b) { |
Native层代码实现
1 | //调用静态方法 |
完整代码地址,希望这篇文章能帮助到你,喜欢记得star下,谢谢!