JNI中java类型的简写
生活随笔
收集整理的這篇文章主要介紹了
JNI中java类型的简写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 在JNI中,當我們使用GetFieldID/GetStaticFieldID或GetMethodID/GetStaticMethodID及定義JNINativeMethod等時,我們需要表示成員變量的類型,或函數傳入參數或返回的類型。JNI把Field的類型,或函數傳入參數或返回值的類型進行簡寫以char*的形式進行表示。
? ? ?對于成員變量,直接用java類型的簡寫表示成員變量的類型就可以 ? ? ?比如:"I"表示該成員變量是Int類型 ? ? ? ? ? ? ? ? "Ljava/lang/String;"表示該成員變量是String類型 ? ? ?示例1: ? ? ? ? ? ? ? ?jfieldID str = (env)->GetFieldID(objectClass,"name","Ljava/lang/String;"); ? ? ? ? ? ? ? ?jfieldID ival = (env)->GetFieldID(objectClass,"serial","I"); ? ? ?對于成員函數,是以"(*)+"形式表示函數的有哪些傳入參數,傳入參數的類型,返回值的類型。"()" 中的字符表示傳入參數,后面的則代表返回值。 ? ? ?例如: ? ? ? ? ? ?"()V" 就表示void Func(); ? ? ? ? ? ?"(II)V" 表示 void Func(int, int); ? ? ? ? ? ?"(Ljava/lang/String;Ljava/lang/String;)I".表示 int Func(String,String) ? ? 示例2: static JNINativeMethod gPowerManagerServiceMethods[] = { /* name, signature, funcPtr */ { "nativeInit", "()V", (void*) android_server_PowerManagerService_nativeInit }, { "nativeSetPowerState", "(ZZ)V", (void*) android_server_PowerManagerService_nativeSetPowerState }, { "nativeStartSurfaceFlingerAnimation", "(I)V", (void*) android_server_PowerManagerService_nativeStartSurfaceFlingerAnimation }, }; ? ? ? 關于類型簡寫,首先請參照下表。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表A| Java 類型 | 符號 |
| Boolean | Z |
| Byte | B |
| Char | C |
| Short | S |
| Int | I |
| Long | L |
| Float | F |
| Double | D |
| Void | V |
| objects對象 | 以"L"開頭,以";"結尾,中間是用"/" 隔開的包及類名。 比如:Ljava/lang/String; 如果是嵌套類,則用$來表示嵌套。 例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z" |
轉載于:https://www.cnblogs.com/Free-Thinker/p/6826204.html
總結
以上是生活随笔為你收集整理的JNI中java类型的简写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SharePoint KB
- 下一篇: 浅谈Socket编程