0

jvalue 配列のメンバーとして int を渡すことによって、2 つの int を取るコンストラクタを持つオブジェクトのインスタンスを作成しようとしています。コンストラクターから引数を出力すると、最初の引数だけが正しく渡されているように見えますが、これはなぜでしょうか? 私のCおよびJavaコードは以下のとおりです。

Cコード

jclass theClass;
jmethodID theMethod;
theClass = (*env)->FindClass(env, "thepackage/TwoNumbers");
theMethod = (*env)->GetMethodID(env, theClass, "<init>", "(II)V");

jvalue args[2];
args[0].i=55;
args[1].i=6;

jobject theObj = (*env)->NewObject(env, theClass, theMethod, *args);

Java コード

package thepackage;
public class TwoNumbers {
    int a;
    int b;

    TwoNumbers(int first, int second) {
        this.a=first;
        this.b=second;
        System.out.println("A is "+first+" and b is "+second);
    }
}
4

1 に答える 1

2

NewObject可変長のパラメーター リストを受け取る関数を呼び出しています。jvalue 引数バージョンを利用するには、 を呼び出す必要がありますNewObjectA

jobject theObj=(*env)->NewObjectA(env,theClass,theMethod,*args);

ドキュメントを参照してください- NewObject

于 2013-10-10T17:32:03.503 に答える