• 【JNI】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"

    另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就可以了,
    比如[I表示 int [];[L/java/lang/objects;表示Objects[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"
  • 相关阅读:
    小程序前端直传阿里云oss的一些记录
    小程序的两种分页做法(后端返回分页及总页数字段与否)
    小程序模糊搜索(词汇联想)
    小程序自定义组件的两种方式
    js对数据的一些处理方法(待完善)
    小程序关于登录授权回跳页面的两个问题记录
    小程序登录的一些简单步骤
    关于js的方括号[]属性赋值的一些记录
    js状态转化的简单写法
    微信企业号开发node版
  • 原文地址:https://www.cnblogs.com/secbook/p/2655027.html
Copyright © 2020-2023  润新知