将多个整数值从jni传递给java

时间:2012-05-19 02:27:07

标签: android java-native-interface

我最初发布在这里(包括代码): 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不起作用。谢谢大家。

1 个答案:

答案 0 :(得分:0)

此问题与'immutable object'无关。使用Integer的原始代码不起作用是因为自动装箱。