2016-08-29 5 views
0

JNIには3種類のメソッドがあります CallObjectMethod CallObjectMethodV CallObjectMethodA メソッドの違いは何ですか?JNIメソッドCallObjectMethod、CallObjectMethodV、およびCallObjectMethodAの違いは何ですか?

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

少なくとも、[JNIドキュメント](http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp16656)をお探しですか? –

答えて

4

唯一の違いは、Java引数がどのように渡されるかです。 Docsは、それは非常によく、すべてを説明します。

コールは<タイプ>メソッドルーチン

プログラマは にすぐmethodID引数を以下のメソッドに渡されているすべての引数を配置します。 CallMethodルーチンはこれらの引数を受け入れ、プログラマが呼び出したいJavaメソッドに を渡します。

コール<タイプ> MethodAルーチンは

プログラマはすぐに methodID引数の後に続くjvaluesの引数配列で メソッドにすべての引数を配置します。 CallMethodAルーチンは、この配列内の引数 を受け入れ、プログラマが呼び出すことを望むJavaメソッドにそれらを渡します。

コール<タイプ> MethodVルーチンは

プログラマはすぐに methodID引数を次のva_list型の引数引数で メソッドにすべての引数を配置します。 CallMethodVルーチンは 引数を受け取り、プログラマーが呼び出すことを望むJavaメソッドにそれらを渡します。

+0

Java関数にパラメータが必要ない場合、何を渡すのですか? –

関連する問題