是否可以在JNI中将输入参数作为输出?

时间:2013-05-28 13:33:29

标签: function java-native-interface arguments

是否可以在JNI中将输入参数作为输出参数?

假设我有:

void average(jint n1,jint n2,jint av);

av作为输出,为什么不输入。

1 个答案:

答案 0 :(得分:0)

不是那种方式,没有。

为了让被调用者修改参数,它必须具有该参数的引用(即指针)。 jint和其他基元通过值传递,这意味着参数的值从一个位置(内存或寄存器)传递到另一个位置。被调用者对该参数所做的任何更改都是对链中的最后一个元素进行的,这显然对它从中复制的位置没有影响。

为了有一个参数"修改",你必须将参考(指针)传递给它。在Java中执行此操作的最直接方法是传递单元素基本数组,并让被调用者用"返回"替换第一个元素。值。

通常只更容易返回值,或者包含多个返回值的聚合对象。