我有一个Java函数,它将接收可变数量的参数,而在JNI中,我正在接收jobjectArray中的所有参数。现在我的问题是:如何获取原始形式的参数(它们可以是字符串,双精度数组,整数...)?

编辑:(基于评论)

这是详细信息。这是我的函数声明:

private native double gsl_stats_all_in_one(String...str);


这是我的函数调用:

variance = this.gsl_stats_all_in_one((String)message.getBody().get("function2"),
                                     Ar‌​rays.toString(data), "1","5");


这是函数定义:

JNIEXPORT jdouble JNICALL Java_org_bel_MyJMSListenerAction_gsl_1stats_1all_1in_1one (JNIEnv *env, jobject obj, jobjectArray arr)


现在我的arr具有所有四个参数I,第一个是字符串,第二个是双精度,第三个和第四个是整数。我如何以原始形式取回所有四个参数。

最佳答案

jobjectArray不包含整数或双精度数或任何原始类型。它包含对象。 jintArray包含int等。您需要重新考虑您的问题。如果要声明本机varargs方法,则最后一个参数的确是jobjectArray,并且包含对象。如果您的Java代码传递了整数,双精度数等,则它们将转换为整数,双精度数等,因此您在本机方法中收到的始终是一个对象。您可以在运行时通过常规的JNI调用询问每个项目的类。

关于java - 如何找回jobjectArray的原始元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8294291/

10-09 01:41