Java-JNI方法中的签名用法

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;