我最初在这里发布(包括代码): Weird: can't change the value of Integer in jni
要将多个值从 jni 传递到 java,我将 2 个整数引用传递给 jni/c,并使用 SetIntField() 修改对象。
不幸的是,这 2 个值是相同的。Lawrence D'Oliveiro 解释说 Integer 是不可变的,所以我们不能改变它。我不知道为什么。
作为一种解决方法,我创建了自己的 Integer 类:
public class MyInteger {
int value;
public MyInteger(int v) {
value = v;
}
}
并将这种类型的对象传递给 jni:
native int do_something(MyInteger p1, MyInteger p2);
有用。我很好奇为什么整数不起作用。谢谢大家。