JNI 数据类型转换、JNI签名

类型转换

Java数据分为基本数据类型和引用数据类型,JNI层也是区别对待这两种类型的。下面是基本数据类型的类型转换

Java Native类型 符号类型 字长
boolean jboolean 无符号 8位
byte jbyte 无符号 8位
char jchar 无符号 16位
short jshort 有符号 16位
int jint 有符号 32位
long jlong 有符号 64位
float jfloat 有符号 32位
double jdouble 有符号 64位

Java引用数据类型转换

Java引用类型 Native类型 Java引用类型 Native类型
All object jobject char[ ] jcharArray
java.lang.Class 实例 jclass short[ ] jshortArray
java.lang.String 实例 jstring int[ ] jintArray
Object[ ] jobjectArray long[ ] jlongArray
boolean[ ] jbooleanArray float[ ] jfloatArray
byte[ ] jbyteArray double[ ] jboubleArray
java.lang.Throwable 实例 jthrowable

JNI 签名

因为Java支持方法重载,所以native层调用Java层方法时需要方法的签名,这样来唯一找到目标函数。

类型标识示意表

类型标识 Java 类型 类型标识 Java 类型
Z boolean F float
B byte D double
C char Ljava/lang/String String
S short [I int[ ]
I int [Ljava/lang/Object Object[ ]
J long

几个函数签名例子

函数签名 Java 函数
"()Ljava/lang/String;" String f()
"(ILjava/lang/Class;)J" long f(int i, Class c)
"([B)V" void f(byte[ ] bytes)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 樱花散落之 掩盖鲜血的流速 刹那 凝固着曲终的舞步 刺杀与割喉 遗留冰冷的温度 刀刃掠过 活着才是痛苦 怜悯之心 ...
    盛夏狂放々阅读 1,397评论 0 0
  • 今天是奶奶的八十大寿,四代同堂。 早早地家人便在酒店订了酒席,今天来的都是亲戚,也有八桌有余。 我也见到了很多好久...
    行走的牡蛎阅读 2,361评论 0 4
  • 王宝强和马蓉离婚的消息,终于被G20杭州峰会的消息刷屏了,看来国人还是有更多有意义的事要做的,关于宝宝的离婚消息,...
    却上心头68阅读 1,839评论 0 0
  • 2017-09-28 今天是距离答辩最后一天,紧张着调试着我的程序,终于我的学生信息管理系统做完了,第一次尝试独自...
    5期刘雪梅阅读 1,150评论 0 0
  • 今天对自己来说真的是收获颇丰且非常巨大的一天,儿子几乎是被自己“骗进”课堂的,内心深处一直担心儿子会不会抗拒排斥,...