签名 java类型
V void
Z boolean
I int
J long
D double
F float
B byte
C char
S short
[I int[]
[F float[]
[B byte[]
[C char[]
[S short[]
[D double[]
[J long[]
[Z boolean[]
L用/分割包的完整类名; Ljava/lang/String; Object
例如: void set(String str); 签名:”(Ljava/lang/String;)V”
可以用javap -s "ClassFile"
命令查看方法签名
- 调用静态方法使用
CallStaticXXXMethod/V/A
函数,XXX 代表返回值的数据类型。如:CallStaticIntMethod
- 调用实例方法使用
CallXXXMethod/V/A
函数,XXX 代表返回的数据类型,如:`CallIntMethod
- 获取一个实例方法的 ID,使用
GetMethodID
函数,传入方法名称和方法签名 - 获以一个静态方法的 ID,使用
GetStaticMethodID
函数,传入方法名称和方法签名 - 获取构造方法 ID,方法名称使用””
- 获取一个类的 Class 实例,使用
FindClass
函数,传入类描述符。JVM 会从 classpath 目录下开始搜索。 - 创建一个类的实例,使用
NewObject
函数,传入 Class 引用和构造方法 ID - 删除局部变量引用,使用
DeleteLocalRef
, 传入引用变量 - 方法签名格式:(形参参数列表)返回值类型。注意:形参参数列表之间不需要用空格或其它字符分隔
- 类描述符格式:L 包名路径/类名;,包名之间用/分隔。如:
Ljava/lang/String;
- 调用
GetMethodID
获取方法 ID 和调用FindClass
获取 Class 实例后,要做异常判断
在填写签名的时候,很多同学都不知道怎么弄。其实也很简单,比如是void类型的,则签名信息”()V”来表示,如果是void(string b ,int a)这样带参数的则是 “(Ljava/lang/String;I)V” 等等,或者 通过javap -s命令生成 ;
该文章属于:计算机技术网原创
转载请注明标题:安卓中JNI接口签名如何生成-计算机技术网
转载请注明出处:https://www.ctvol.com/asreverse/34034.html