一尘不染

在Java中将对象声明为final

java

有人可以澄清以下代码的重要性吗?

class A
{
    int i = 10;

    public void setI(int b)
    {
        i = b;
    }

    public int getI()
    {
        return i;
    }
}

class Test
{    
    public static void main(String args[]) throws Throwable
    { 
        final A ob = new A();
        ob.setI(10);
        System.out.println(ob.getI());
    }
}

对象A被声明为final,但是我可以更改该对象的实例变量的值,也可以获取更新后的值。那么将对象声明为final的意义何在?我知道将原始数据类型声明为final,这使该变量保持不变。


阅读 600

收藏
2020-12-03

共1个答案

一尘不染

ob将无法引用任何其他对象:final关键字

不能重新分配。但是您可以更改其内部(如果它是原始的,则是可变的)。所以这有效:

  final A ob = new A();
  ob.setI(6)

但这不是:

  final A ob = new A();
  ob = new A();
2020-12-03