Java笔记-JNI各种签名以及例子

目录

 

基本概念

栗子说明


 

基本概念

在JNI中有很多函数某些参数都要使用签名,如下:

其中的sig就是签名;

签名是一种用参数个数和类型区分同名方法的手段,即解决方法重载问题。

其中要特别注意的是:

          1. 类描述符开头的'L'与结尾的';'必须要有;

          2. 数组描述符,开头的'['必须有;

          3. 方法描述符规则: "(各参数描述符)返回值描述符",其中参数描述符间没有任何分隔符号。

描述符很重要,请烂熟于心. 写JNI,对于错误的签名一定要特别敏感,此时编译器帮不上忙,执行make 前仔细检查你的代码。

给出如下的几个表:

下面对这张表进行补充本补充来源于百度

1. 基本类型签名:

JavaNativeSignature
bytejbyteB
charjcharC
doublejdoubleD
floatjfloatF
intjintI
shortjshortS
longjlongJ
booleanjbooleanZ
voidvoidV

2. 引用数据类型的转换

JavaNativeSignature
所有对象jobjectL+classname +;
ClassjclassLjava/lang/Class;
StringjstringLjava/lang/String;
ThrowablejthrowableLjava/lang/Throwable;
Object[]jobjectArray[L+classname +;
byte[]jbyteArray[B
char[]jcharArray[C
double[]jdoubleArray[D
float[]jfloatArray[F
int[]jintArray[I
short[]jshortArray[S
long[]jlongArray[J
boolean[]jbooleanArray[Z

 

栗子说明

举几个例子:

如下Java 方法:
long f (int n, String s, int[] arr);
signature: "(ILjava/lang/String;[I)J"

 

编码过程中,对象的签名2中方法都是可以行的。 
例如: java 中 String 
          1.直接签名:java/lang/String 
          2.标准签名:Ljava/lang/String;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值