NDK(16)Jni中GetStaticFieldID和GetMethodID 中的类型标识串

    env在GetStaticFieldID和GetMethodID 时,函数参数和返回值的类型要指定类型标识串,如:

    jmethodID init = env->GetMethodID(clz,"<init>","([B)V");
    jfieldID field = env->GetFieldID(clz,"mName","Ljava/lang/String;");

1)基本类型对应关系

标识串Jni 类型C 类型
voidvoid
Zjbooleanboolean
 Ijintint
Jjlonglong
Djdoubledouble
Fjfloatfloat
Bjbytebyte
Cjcharchar
Sjshortshort


2)基本类型数组

(以 [ 开始,用两个字符表示)
         

标识串 Jni 类型C 类型
[ZjbooleanArraybool []
[IjintArrayint[]
[JjlongArraylong[]
[DjdoubleArraydouble[]
[FjfloatArrayfloat[]
[BjbyteArraybyte[]
[CjcharArraychar[]
[SjshortArrayshort[]


3)类(class)

(以 L 开头,以 ; 结尾,中间是用 / 隔开的 包 及 类名)

标识串Java 类型Jni 类型
L包1/包n/类名; 类名jobject
Ljava/net/Socket;Socketjobject


4)例外(String 类)

标识串Java 类型Jni 类型
L包1/包n/类名; 类名jobject
Ljava/lang/String; Stringjstring

 

5)嵌套类

(类位于另一个类之中,则用$作为类名间的分隔符)

标识串Java 类型Jni 类型
L包1/包n/类名$嵌套类名;类名jobject
Landroid/os/FileUtils$FileStatus;FileStatusjobject

 

注意:

  本文说的函数参数和返回值的类型,而在env->FindClass(xxx);时不写Ljava/lang/String; 而是java/lang/String

如: 

jclass clz = env->FindClass("java/lang/String");

 

转载于:https://www.cnblogs.com/sjjg/p/4744527.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值