JNI_Z_02_函数参数_JNIEnv*_jclass_jobject

1、

  1.1、JNIEXPORT void JNICALL Java_包名_类名_函数名01(JNIEnv * env, jclass clazz)  // Java代码中的 静态函数

  1.2、JNIEXPORT void JNICALL Java_包名_类名_函数名02(JNIEnv * env, jobject obj)  // Java代码中的 非静态函数

2、参数解释:

2.1、参数中的 JNIEnv* env参数的解释:

  JNIEnv类型实际上代表了Java环境,通过这个JNIEnv* 指针,就可以对Java端的代码进行操作。例如,创建Jaa类中的对象,调用Java对象的方法,获取Java对象中的属性等等。

  JNIEnv的指针会被JNI传入到本地方法的实现函数中来对Java端的代码进行操作。

  JNIEnv类中有很多函数可以用:
    NewObject:创建Java类中的对象
    NewString:创建Java类中的String对象
    New<Type>Array:创建类型为Type的数组对象
    Get<Type>Field:获取类型为Type的字段
    Set<Type>Field:设置类型为Type的字段的值
    GetStatic<Type>Field:获取类型为Type的static的字段
    SetStatic<Type>Field:设置类型为Type的static的字段的值
    Call<Type>Method:调用返回类型为Type的方法
    CallStatic<Type>Method:调用返回值类型为Type的static方法
   等许多的函数,具体的可以查看jni.h文件中的函数名称。

2.2、参数 : jobject obj的解释:

  2.2.1、如果native方法是static的话,这个obj就代表这个native方法的类的class对象实例(static方法不需要类实例的,所以就代表这个类的class对象)

    ZC: 即 函数参数中的"jclass clazz"

  2.2.2、如果native方法不是static的话,这个obj就代表这个native方法的类实例

    ZC: 即 函数参数中的"jobject obj"

3、

原文地址:https://www.cnblogs.com/javaskill/p/5421111.html