0

私は最初にここに投稿しました(コードを含めてください): 奇妙な: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);

できます。Integer が機能しない理由が気になります。皆さんありがとう。

4

1 に答える 1

0

この問題は「不変オブジェクト」とは関係ありません。オートボクシングが原因で、Integer を使用した元のコードが機能しません。

于 2012-05-22T05:52:02.450 に答える