美文网首页
JNI 数据类型转换、JNI签名

JNI 数据类型转换、JNI签名

作者: 贼厉害 | 来源:发表于2020-01-03 09:42 被阅读0次

    类型转换

    Java数据分为基本数据类型和引用数据类型,JNI层也是区别对待这两种类型的。下面是基本数据类型的类型转换

    Java Native类型 符号类型 字长
    boolean jboolean 无符号 8位
    byte jbyte 无符号 8位
    char jchar 无符号 16位
    short jshort 有符号 16位
    int jint 有符号 32位
    long jlong 有符号 64位
    float jfloat 有符号 32位
    double jdouble 有符号 64位

    Java引用数据类型转换

    Java引用类型 Native类型 Java引用类型 Native类型
    All object jobject char[ ] jcharArray
    java.lang.Class 实例 jclass short[ ] jshortArray
    java.lang.String 实例 jstring int[ ] jintArray
    Object[ ] jobjectArray long[ ] jlongArray
    boolean[ ] jbooleanArray float[ ] jfloatArray
    byte[ ] jbyteArray double[ ] jboubleArray
    java.lang.Throwable 实例 jthrowable

    JNI 签名

    因为Java支持方法重载,所以native层调用Java层方法时需要方法的签名,这样来唯一找到目标函数。

    类型标识示意表

    类型标识 Java 类型 类型标识 Java 类型
    Z boolean F float
    B byte D double
    C char Ljava/lang/String String
    S short [I int[ ]
    I int [Ljava/lang/Object Object[ ]
    J long

    几个函数签名例子

    函数签名 Java 函数
    "()Ljava/lang/String;" String f()
    "(ILjava/lang/Class;)J" long f(int i, Class c)
    "([B)V" void f(byte[ ] bytes)

    相关文章

      网友评论

          本文标题:JNI 数据类型转换、JNI签名

          本文链接:https://www.haomeiwen.com/subject/rwzaoctx.html