JNI中java类型的简写
JAVA 类型 JNI 简写
2023-09-11 14:17:57 时间
在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" |
另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就可以了,
比如:[I表示 int [];[L/java/lang/objects;表示Objects[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"
相关文章
- 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?
- java学习,从一个字符串中统计同一类型出现的次数
- java中的类型擦除type erasure
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- java验证码
- java 程序员 和 三八女神节有什么神秘的关系,你晓得吗? 用Java 给女神绘制一张贺卡你会吗?
- tomcat启动报错“Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: iZ25fsk1ifk: iZ25fsk1ifk”
- 【Java】获取类中所有的方法
- Java的八种基本类型:(按字节来分)
- Android JNI入门第二篇——Java参数类型与本地参数类型对照
- Java学习-047-数值格式化及小数位数四舍五入
- java安全编码指南之:声明和初始化
- java 枚举类型
- java中相同名字不同返回类型的方法
- Java的环境变量配置
- 一个Java的权限框架-Shiro
- 逻辑回归的相关问题及java实现
- java面向对象编程——总结
- 最近5年183个Java面试问题列表及答案[最全]
- Java ConcurrentHashMap Example and Iterator--转
- Java 报错 Information:java: javacTask: 源发行版 8 需要目标发行版 1.8
- java 基础 Long类型 判断是否相等