4

オブジェクトを変更するfinalことはできませんが、その属性を設定できます:

final MyClass object = new MyClass();
object.setAttr("something");              //<-- OK
object = someOtherObject;                 //<-- NOT OK

a で同じことを行い、その値final Integerを変更することは可能ですか?int

私は労働者を呼ぶので尋ねています:

public SomeClass myFunction(final String val1, final Integer myInt) {

    session.doWork(new Work() {
    @Override
    public void execute(...) {
        //Use and change value of myInt here
        //Using it requires it to be declared final (same reference)
    }
}

そして、myIntその内部の値を設定する必要があります。

int別のクラス内で自分を宣言できますが、それは機能します。しかし、これが必要かどうかは疑問です。

4

4 に答える 4

13

いいえ: anIntegerは、たとえば のように不変ですString

ただし、整数を埋め込んで Integer の代わりに使用する独自のクラスを設計できます。

public class MutableInteger {
    private int value;
    public MutableInteger(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
}
于 2012-10-05T16:14:54.693 に答える
6

設計上不変であるため、できません。

int[]またはInteger[]またはの値を設定できます。AtomicInteger

于 2012-10-05T16:15:57.827 に答える
3

一度割り当てられた整数の値を変更することはできませんfinal。ただし、割り当てを遅らせることはできます。つまり、 -final整数を割り当てることができるのは 1 回だけです。宣言時、初期化ブロック、またはコンストラクタ..

于 2012-10-05T16:14:53.483 に答える
2

最終的な別のオブジェクトで整数をラップし、そのラッパーオブジェクト内の整数を別のオブジェクトに「置き換える」ことができます。

于 2012-10-05T16:16:25.317 に答える