JNI为什么jintArray不能被视为[我而不是Ljava / lang / Object?

By simon at 2018-02-28 • 0人收藏 • 52人看过

我很好奇以下代码片段:

jintArray someJIntArray;
jfloatArray someJFloatArray;

// ... put legit values to someJIntArray and someJFloatArray

jclass pairClass = env->FindClass("android/util/Pair");

// #1
jmethodID pairConstructor = env->GetMethodID(pairClass, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;)V");

// #2
jmethodID pairConstructor = env->GetMethodID(pairClass, "<init>", "([I[F)V");

jobject pairObject = env->NewObject(pairClass, pairConstructor, someJIntArray, someJFloatArray);
如果我使用#1,那么我的JNI代码运行正常。但是,如果我使用#2 那么会发生9​​999999999153错误。 我想知道,为什么我不能为jintArray使用[I和[F 和jfloatArray?其实我也很好奇Ljava/lang/Object;为什么会在这里工作 代码段,而int和float不是obJava中的项目。

2 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

你具体要求它找到构造函数Pair(int[], float[]),哪个 不存在。 这不关乎你的价值要通过,但关于类型的 形式参数。

2018-02-28   #2

你具体要求它找到构造函数Pair(int[], float[]),哪个 不存在。 这不关乎你的价值要通过,但关于类型的 形式参数。

登录后方可回帖

Loading...