首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNI为什么jintArray不能被认为是[I而不是Ljava/lang/Object?

问JNI为什么jintArray不能被认为是[I而不是Ljava/lang/Object?
EN

Stack Overflow用户
提问于 2018-02-27 15:36:06
回答 1查看 289关注 0票数 0

我对下面的代码片段很好奇:

代码语言:javascript
复制
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,那么就会出现Pending exception java.lang.NoSuchMethodError: no non-static method "Landroid/util/Pair;.<init>([I[F)V"错误。

我想知道,为什么我不能在jintArray和jfloatArray上使用[I和[F?实际上,我也很好奇为什么在这个代码片段中Ljava/lang/Object;可以工作,而int和float在Java语言中不是对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-27 15:43:46

您专门请求它来查找不存在的构造函数Pair(int[], float[])。

它不是关于你要传递的值,而是关于形参的类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49003430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档