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个例子,应该就都清楚了吧。