Java笔记-JNI各种签名以及例子
目錄
?
基本概念
栗子說明
?
基本概念
在JNI中有很多函數(shù)某些參數(shù)都要使用簽名,如下:
其中的sig就是簽名;
簽名是一種用參數(shù)個數(shù)和類型區(qū)分同名方法的手段,即解決方法重載問題。
其中要特別注意的是:
? ? ? ? ??1. 類描述符開頭的'L'與結尾的';'必須要有;
? ? ? ? ??2. 數(shù)組描述符,開頭的'['必須有;
? ? ? ? ??3. 方法描述符規(guī)則: "(各參數(shù)描述符)返回值描述符",其中參數(shù)描述符間沒有任何分隔符號。
描述符很重要,請爛熟于心. 寫JNI,對于錯誤的簽名一定要特別敏感,此時編譯器幫不上忙,執(zhí)行make 前仔細檢查你的代碼。
給出如下的幾個表:
下面對這張表進行補充本補充來源于百度
1. 基本類型簽名:
| Java | Native | Signature |
| byte | jbyte | B |
| char | jchar | C |
| double | jdouble | D |
| float | jfloat | F |
| int | jint | I |
| short | jshort | S |
| long | jlong | J |
| boolean | jboolean | Z |
| void | void | V |
2. 引用數(shù)據(jù)類型的轉換
| Java | Native | Signature |
| 所有對象 | jobject | L+classname +; |
| Class | jclass | Ljava/lang/Class; |
| String | jstring | Ljava/lang/String; |
| Throwable | jthrowable | Ljava/lang/Throwable; |
| Object[] | jobjectArray | [L+classname +; |
| byte[] | jbyteArray | [B |
| char[] | jcharArray | [C |
| double[] | jdoubleArray | [D |
| float[] | jfloatArray | [F |
| int[] | jintArray | [I |
| short[] | jshortArray | [S |
| long[] | jlongArray | [J |
| boolean[] | jbooleanArray | [Z |
?
栗子說明
舉幾個例子:
如下Java 方法:
long f (int n, String s, int[] arr);
signature: "(ILjava/lang/String;[I)J"
?
編碼過程中,對象的簽名2中方法都是可以行的。?
例如: java 中 String?
? ? ? ? ? 1.直接簽名:java/lang/String?
? ? ? ? ? 2.標準簽名:Ljava/lang/String;
?
總結
以上是生活随笔為你收集整理的Java笔记-JNI各种签名以及例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-重写JsonSeriali
- 下一篇: Java笔记-通过反射获取注解及Spri