0
jclass object = (*env)->FindClass(env,"java/lang/Integer") // C Code

整数値を に関連付ける方法はありますobjectか? object整数を含む/ポイントしたい。

4

1 に答える 1

4

JNI ガイドの「落とし穴」セクションにある「Confusing jclass with jobject」を必ず読んで理解してください。

FindClass(env, "Foo")type のオブジェクト (へのハンドル) を返しますjava.lang.Class。概念的には静的メソッドと同等です。Class.forName(String)パラメーターとして指定したクラスのインスタンスを返しません ( Foo)。Classそのクラスを表す型のオブジェクトを返します。

a jclass(または a Class) でできることは、必要なコンストラクターを見つけ、そのコンストラクターを呼び出して type のオブジェクトを作成することですFoo

JNI ガイドには、クラスの呼び出しコンストラクターStringでこれを行う方法の例があります。Integerメソッドの署名を除いて、クラスに対して行うことは似ています。

次のようにします。

jclass clazz = (*env)->FindClass(env, "java/lang/Integer");
jmethodID mid = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
jobject mint = (*env)->NewObject(env, clazz, mid, 42); // your desired value here

(エラーチェックが必要です。)

于 2012-05-18T10:14:54.250 に答える