JNI方法命名和方法签名

JNI的方法命名规则

对于初学者来说,JNI开发,生成的JNI方法,都是通过调用javah命令来生成的。

但是写的多了,可以发现其实也是有规律可寻的。

下面就简单说下JNI的方法命名规则;

1.前缀: Java_

2.类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest

3.方法名:getTestString

比如java的一个在com.my.example包里的一个MyTest类里的一个getHelloWorld()方法

那么他对应的jni方法名是:

Java_com_my_example_MyTest_getHelloWorld

JNI的方法签名

首先列出java数据类型与签名类型的对应关系:

Java类型         类型签名

boolean           Z

byte                B

int                  I

char               C

short              S

long               L

float              F

double           D

void              V

数组              [类型签名,比如int[] 是[I

类                 L全限定名;,比如String, 其签名为Ljava/lang/String;(注意后面有个分号)

对一个方法,其签名就是其参数类型签名和返回值类型签名的字符串,举例个例子,一目了然。

方法例子1:

public void example1(int string, double index)

对应签名:

(ID)V

方法例子2:

public string example2(String string, int index)

对应签名:

(Ljava/util/String;I)Ljava/util/String;

方法例子3:

public int example3(int index, String value,int[] arr)

对应签名:

(ILjava/util/String;[I)I

看了上面的3个例子,应该就都清楚了吧。

原文地址:https://www.cnblogs.com/bokezhilu/p/7679527.html