JNI 中AllocObject 和 NewObject的区别

774 阅读1分钟

对象操作

  • jobject AllocObject(jclass clazz)
    • 说明:不调用构造方法创建实例
    • 参数:clazz:指定对象的类
  • jobject NewObject(jclass clazz, jmethodID methodID, …)
  • jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args)
  • jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args)
    • 说明:使用指定的构造方法创建类的实例,唯一不同的是输入参数的传入形式不同

    • 参数:

    • clazz:指定对象的类

    • methodID:指定的构造方法

    • args:输入参数列表

  • 示例:
jclass rect_clazz = env->FindClass("android/graphics/Rect");
jmethodID rect_constructor = env->GetMethodID(rect_clazz, "<init>", "()V");
jobject rect = env->NewObject(rect_clazz, rect_constructor);