Android NDK开发

NDK开发(二)--JNI基础知识

2019-11-24  本文已影响0人  骑着蜗牛闯世界666

一、JNI数据类型

JNI的数据类型包含两种:基本类型和引用类型,每个java的数据类型,都有相对应的JNI类型。

1、基本数据类型

Java中的数据类型的对应关系如下:


-w287

2、引用类型

Java中的引用数据类型的对应关系如下:


-w521

二、JNI类型签名

JNI的类型签名标识一个特定的Java类型,这个类型可以是类也可以是方法或者数据类型。

L+包名+类名+;的形式,在编写的时候,需要将全路径里面的"."替换成“/”,例如最常用的java.land.String对应的签名是Ljava/land/String;

采用的是大写字符来表示。基本上都是基本数据类型的首字母大写,但boolean和long除外,因为B已经被byte占用,L表示的是类签名。


-w311

其实就是类签名,譬如String对象额签名是Ljava/lang/String;。一维数组签名的格式为[+类型签名,譬如int数组,对应的签名就是[I,依此类推,其他类型对应的数组签名如下:
int[] 其描述符为[I float[] 其描述符为[F String[] 其描述符为[Ljava/lang/String; Object[] 描述符为[Ljava/lang/Object;
多维数组则是 n个[ +该类型的域描述符,N代表的是几维数组。例如:
int[][] 其描述符为[[I float[][] 其描述符为[[F

当在开发过程中,可以使用javap -s + 对应的类,即可打印出所有的方法签名。

REF

https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp9502

上一篇 下一篇

猜你喜欢

热点阅读