JNI字段描述符“([Ljava/lang/String;)V” --- 语法定义

“([Ljava/lang/String;)V” 它是一种对函数返回值和参数的编码。这种编码叫作JNI字段描述符(JavaNative Interface FieldDescriptors)。一个数组int[],就须要表示为这样"[I"。若是多个数组double[][][]就须要表示为这样 "[[[D"。也就是说每个方括号开始,就表示一个数组维数。多个方框后面,就是数组 的类型。java

 

     若是以一个L开头的描述符,就是类描述符,它后紧跟着类的字符串,而后分号“;”结束。android

 

     好比"Ljava/lang/String;"就是表示类型String;数组

 

     "[I"就是表示int[];函数

 

     "[Ljava/lang/Object;"就是表示Object[]。编码

 

     JNI方法描述符,主要就是在括号里放置参数,在括号后面放置返回类型,以下:对象

 

   (参数描述符)返回类型ip

 

    当一个函数不须要返回参数类型时,就使用”V”来表示。字符串

 

    好比"()Ljava/lang/String;"就是表示String f();object

 

    "(ILjava/lang/Class;)J"就是表示long f(int i, Class c);引用

 

    "([B)V"就是表示void String(byte[] bytes);

 

Java 类型

符号

Boolean

Z

Byte

B

Char

C

Short

S

Int

I

Long

J

Float

F

Double

D

Void

V

objects对象

以"L"开头,以";"结尾,中间是用"/" 隔开的包及类名。好比:Ljava/lang/String;若是是嵌套类,则用$来表示嵌套。例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"

 

     另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就能够了,好比:[I 表示 int [];[L/java/lang/objects;表示Objects[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"

 

     例如:

 

             "()V" 就表示void Func();

 

             "(II)V" 表示 void Func(int, int);

 

             "(Ljava/lang/String;Ljava/lang/String;)I".表示 int Func(String,String)  

相关文章
相关标签/搜索