JNI方法CallObjectMethod,CallObjectMethodV和CallObjectMethodA的区别

What does the difference of the JNI method CallObjectMethod,CallObjectMethodV and CallObjectMethodA?

本文关键字:CallObjectMethodA 区别 CallObjectMethodV 方法 CallObjectMethod JNI      更新时间:2023-10-16

JNI中有3种方法CallObjectMethodCallObjectMethodVCallObjectMethodA那么这两种方法有什么不同呢?

jobject     (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...);
jobject     (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list);
jobject     (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*);

唯一的区别是java参数传递的方式。文档解释得很好:

Call<类型>方法例程

程序员放置所有to的参数在methodID参数之后立即传递给方法。CallMethod例程接受这些参数并传递它们到程序员希望调用的Java方法。

Call<类型> MethodA例程

程序员将所有参数放入方法后紧接的jvalues的args数组中的方法methodID论点。CallMethodA例程接受参数,并依次将它们传递给Java方法程序员希望调用。

Call<类型> MethodV例程

程序员将所有参数放入在紧接其后的va_list类型的args参数中使用methodID参数。CallMethodV例程接受参数,并依次将它们传递给Java方法程序员希望调用。

相关文章:
  • 没有找到相关文章