0

我最初在这里发布(包括代码): 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);

有用。我很好奇为什么整数不起作用。谢谢大家。

4

1 回答 1

0

此问题与“不可变对象”无关。使用 Integer 的原始代码不起作用是因为自动装箱。

于 2012-05-22T05:52:02.450 回答