對於成員變量,直接用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" |
另外數組類型的簡寫,則用"["加上如表A所示的對應類型的簡寫形式進行表示就可以了,
比如:[I表示 int [];[L/java/lang/objects;表示Objects[],另外。引用類型(除基本類型的數組外)的標示最后都有個";"
