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