0

doubleの 2D 配列を渡すネイティブJava 関数を作成しました。Java 側の "double [][]" は、JNI/C++ 側では "jobjectArray" になります。したがって、「外側」配列の要素にアクセスするにはGetObjectArrayElement()を使用する必要があり、これらの要素 (つまり「内側」配列) はjdoubleArray型である必要があります。しかし、GetObjectArrayElement()関数から、jobjectタイプとしてそれらを取得します。では、 IsInstanceOf()関数を使用して、jobjectが実際にjdoubleArrayであるかどうかを確認するにはどうすればよいでしょうか?

もちろん、 jobjectArrayクラスを表すjclassが必要です。しかし、それを行う方法は?jobjectArrayクラスFindClassに渡す必要がある文字列がわかりません。どうやら、Java 側のjobjectArrayに相当するものはありません...これまでに把握した唯一の方法は次のとおりです。

jdoubleArray dummyDoubleArray = env->NewDoubleArray(1);
jclass doubleArrayClass = env->GetObjectClass(dummyDoubleArray);

if(env->IsInstanceOf(element, doubleArrayClass)) ...

これは毎回ダミーの DoubleArray を作成する必要があります! より効率的な方法はありますか?

前もって感謝します!

4

0 に答える 0