1. java的数据类型的签名

开发jni经常需要在jni层调用java层的方法,或者创建引用,这个时候就需要用到java的属性或者方法的签名,详细介绍如下:

一 . java中8种基本数据类型签名:

Java数据类型       签名              jni数据类型

char               C                   jchar

byte               B                   jbyte

short              S                   jshort

int                I                   jint

long               J                   jlong

double             D                   jdouble

float              F                   jfloat

boolean            Z                  jboolean

二.java中8种包装类数据类型签名:

Character   Ljava/lang/Character;

Byte        Ljava/lang/Byte;

Short       Ljava/lang/Short;

Integer     Ljava/lang/Integer;

Long        Ljava/lang/Long;

Double      Ljava/lang/Double;

Float       Ljava/lang/Float;

Boolean     Ljava/lang/Boolean;

三.类类型签名:

java类型 jni类型 签名
Object jobject Ljava/lang/Object;
String jstring Ljava/lang/String;
L$;     $在实际使用过程中需要替换成类的全路径,并且需要把 . 替换为/

四.方法签名:

 ($1)$2     $1是每个参数的签名,中间不需要空格或者分割符

            $2是方法的返回值签名

五.

Java类型 C++类型 签名
Array jarray [elementType
Object[] jobjectArray [Ljava/lang/Object;
boolean[] jbooleanArray [z
byte[] jbyteArray [B
char[] jcharArray [C
short[] jshortArray [S
int[] jintArray [I
long jlongArray [J
float[] jfloatArray [F
double[] jdoubleArray [D
1)数组签名


    [$              $是每个数据类型的签名,其中不定长参数也用此方式处理

2)特殊类型
    
    Map             Ljava/util/Map;

    List            Ljava/util/List;

六:最后补充一个void和泛型


Void         Ljava/lang/Void;

T            Ljava/lang/Object;

七.需要注意的地方

    1).类型的数据签名后面都有分号;而基本数据类型后面没有分号;

    2).基本数据类型的包装类也是类类型,故也用类方式来处理

    3).自定义类,不要忘记了最前面的L
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容