我需要从JNI调用的java方法中传递一个数组和一个整数。
public static int foo(byte[] data)
{
byte[] buffer;
// Fill buffer with data
data = buffer; // <--- This doesn't work as the pointer is changed
return bufferSize;
}
在指示的行中,我理解指针已更改,但我在JNI中引用的data
的引用不会更新,因此我无法获取新数据。
我如何通过参数返回额外数据?
答案 0 :(得分:0)
归功于K-ballo:
字节数组需要在包装类中。
class ByteArrayWrapper {
public ByteArrayWrapper() {}
public byte[] array;
}
在JNI中,我创建了这个类的实例并将其传递给方法。
public static int foo(ByteArrayWrapper data) {
byte[] buffer;
// Fill buffer with data
data.array = buffer;
return bufferSize;
}
JNI中ByteArrayWrapper
的实例现在包含新的字节数组,可以使用该属性的jfieldID
来访问它。