更改最终整型变量的值(Change the value of final Integer varia

2019-08-01 04:29发布

一个final目标不能改变,但我们可以设置它的属性:

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

是否有可能做同样与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另一个类中,这是可行的。 但我不知道这是否是必要的。

Answer 1:

无:一个Integer是不可改变的,就像例如String

但是,你可以设计自己的类中嵌入一个整数,并使用它不是整数的:

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;
    }
}


Answer 2:

你不能因为它的设计不变。

您可以设置的值int[]Integer[]AtomicInteger



Answer 3:

你不能改变的价值final整数分配一次。但是,可以延迟分配,即: -只能指定一个final整数一次。您可以在申报的时候做,要么,或初始化块,或构造..



Answer 4:

你可以换你整数另一个对象是最终再由另一个“取代”是包装对象内的整数。



文章来源: Change the value of final Integer variable