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编程