zoukankan      html  css  js  c++  java
  • Android JNI 学习(六):Object Operations Api

    一、AllocObject

    jobjectAllocObject(JNIEnv *env, jclass clazz);

    分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。

    clazz 参数务必不要引用数组类。

    参数:

    env:JNI 接口指针。

    clazz:Java 类对象。

    返回值:

    返回 Java 对象。如果无法构造该对象,则返回NULL

    抛出:

    InstantiationException:如果该类为一个接口或抽象类。

    OutOfMemoryError:如果系统内存不足。

    二、NewObject、NewObjectA、NewObjectV

    jobjectNewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...);
    jobject NewObjectA(JNIEnv *env,jclass clazz, jmethodID methodID, jvalue *args);
    jobject NewObjectV(JNIEnv *env,jclass clazz, jmethodID methodID, va_list args);

    构造新 Java 对象。方法 ID指示应调用的构造函数方法。该 ID 必须通过调用 GetMethodID() 获得,且调用时的方法名必须为 <init>,而返回类型必须为 void (V)。

    clazz参数务必不要引用数组类。

    NewObject

    编程人员应将传递给构造函数的所有参数紧跟着放在 methodID 参数的后面。NewObject()收到这些参数后,将把它们传给编程人员所要调用的 Java 方法。

    NewObjectA

    编程人员应将传递给构造函数的所有参数放在 jvalues 类型的数组 args 中,该数组紧跟着放在 methodID 参数的后面。NewObject()收到数组中的这些参数后,将把它们传给编程人员所要调用的 Java 方法。

    NewObjectV

    编程人员应将传递给构造函数的所有参数放在va_list 类型的参数 args 中,该参数紧跟着放在 methodID 参数的后面。NewObject()收到这些参数后,将把它们传给编程人员所要调用的 Java 方法。

    参数:

    env:JNI 接口指针。

    clazz:Java 类对象。

    methodID:构造函数的方法 ID。

    NewObject 的其它参数:

    传给构造函数的参数。

    NewObjectA 的其它参数:

    args:传给构造函数的参数数组。

    NewObjectV 的其它参数:

    args:传给构造函数的参数 va_list。

    返回值:

    返回 Java 对象,如果无法构造该对象,则返回NULL

    抛出异常/错误:

    InstantiationException:如果该类为接口或抽象类。

    OutOfMemoryError:如果系统内存不足。

    三、GetObjectClass

    jclassGetObjectClass(JNIEnv *env, jobject obj);

    返回对象的类。

    参数:

    env:JNI 接口指针。

    obj:Java 对象(不能为 NULL)。

    返回值:

    返回 Java 类对象。

    四、IsInstanceOf

    jbooleanIsInstanceOf(JNIEnv *env, jobject obj, jclass clazz);

    测试对象是否为某个类的实例。

    参数:

    env:JNI 接口指针。

    obj:Java 对象。

    clazz:Java 类对象。

    返回值:

    如果可将 obj 强制转换为 clazz,则返回 JNI_TRUE。否则返回 JNI_FALSENULL 对象可强制转换为任何类。

    五、IsSameObject

    jbooleanIsSameObject(JNIEnv *env, jobject ref1,  jobject ref2);

    测试两个引用是否引用同一 Java 对象。

    参数:

    env:JNI 接口指针。

    ref1:Java 对象。

    ref2:Java 对象。

    返回值:

    如果 ref1 和 ref2 引用同一 Java 对象或均为 NULL,则返回 JNI_TRUE。否则返回 JNI_FALSE

  • 相关阅读:
    MV*模式的个人理解
    Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) (转)
    不定宽高元素的水平垂直居中
    判断是否在微信浏览器中
    HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)
    清除inline-block元素间距
    rs485多主
    基于状态机的单片机按键短按长按功能的实现
    深入理解FIFO(包含有FIFO深度的解释)——转载
    传递指针的指针(错误的例子)
  • 原文地址:https://www.cnblogs.com/renhui/p/9966380.html
Copyright © 2011-2022 走看看