JNI的數(shù)據(jù)類型和類型簽名

JNI的數(shù)據(jù)類型

基本類型

JNI類型 Java類型 描述
jbyte byte 有符號,8位,整型
jshort short 有符號,16位,整型
jint int 有符號,32位,整型
jlong long 有符號,64位,整型
jfloat float 32位,浮點型
jdouble double 64位,浮點型
jboolean boolean 無符號,8位,整型
jchar char 無符號,16位,整型
void void N/A

引用類型

JNI類型 Java類型 描述
jclass Class
jobject Object Java對象
jstring String 字符串
jobjectArray Object[] 對象數(shù)組
jbyteArray byte[] byte數(shù)組
jshortArray short[] short數(shù)組
jintArray int[] int數(shù)組
jlongArray long[] long數(shù)組
jfloatArray float[] float數(shù)組
jdoubleArray double[] double數(shù)組
jbooleanArray boolean[] boolean數(shù)組
jcharArray char[] char數(shù)組
jthrowable Throwable Throwable

jmethodID、jfieldID

  1. jmethodID可用于獲取類中函數(shù)的標識,然后通過此標識來調(diào)用函數(shù)。

  2. jfieldID可用于獲取類中變量的標識,然后通過此標識來讀寫變量。

JNI的類型簽名

  • JNI的類型簽名標識了一個特定的Java類型,這個類型可以是類、方法或數(shù)據(jù)類型。

類和對象的簽名

  • 采用L+包名+類名+;的形式,且將包名中的.替換為/。

    如:java.lang.String的簽名為Ljava/lang/String;,注意末尾的;也是簽名的一部分

基本數(shù)據(jù)類型的簽名

  • 基本數(shù)據(jù)類型的簽名是有規(guī)律的。

    1. 一般為首字母的大寫;
    1. boolean用Z,因為B被byte占用了;
    1. long用J,因為L用來表示類的簽名。
Java類型 簽名
byte B
short S
int I
long J
float F
double D
boolean Z
char C
void V

數(shù)組的簽名

  • 一維數(shù)組的簽名就是[+類型簽名。
Java類型 簽名
Object[] [Ljava/lang/Object
String[] [Ljava/lang/String
byte[] [B
short[] [S
int[] [I
long[] [J
float[] [F
double[] [D
boolean[] [Z
char[] [C
  • 多維數(shù)組的簽名就是n個[+類型簽名,其中n表示數(shù)組的維度。

    如:int[][]的簽名為[[I。

方法的簽名

  • 方法的簽名為:(各參數(shù)類型簽名)返回值類型簽名。

    如:int func1()的簽名為()I。

    如:void func2(int i)的簽名為(I)V。

    如:boolean func3(int a, double b, String[] c)的簽名為(ID[Ljava/lang/String)Z

我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容