JNI在取出Java对象的方法时,需要用签名匹配的规则来取。签名由两部分组成,第一部分是方法名,第二部分是参数和返回值。
基本数据类型
下面是基本数据类型对应表,用于匹配参数和返回值:
File Desciptor | Java Language Type |
---|---|
Z | boolean |
B | byte |
C | char |
S | short |
I | int |
J | long |
F | float |
D | double |
下面举例说明:
()V:
env->GetMethodID(class, "<init>", "()V");
上述代码中,签名的方法名是init,参数为空,返回值是void。
(I)V:
env->GetMethodID(class, "<init>", "(I)V");
上述代码中,签名的方法名是init,参数为整形,返回值是void。
(I)I:
env->GetMethodID(class, "<init>", "(I)I");
上述代码中,签名的方法名是init,参数为整形,返回值是整形。
引用数据类型
引用数据类型,以”L”开头,”;”结束,中间对应的是该类型的包路径。
例如:
String:Ljava/lang/String;
Object:Ljava/lang/Object;
数组类型
数组类型用”[“开头,后面跟着类型,不需要结束。
例如:
int[]:[I
Object[][][]:[[[Ljava/lang/Object;