有人可以澄清以下代码的重要性吗?
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,这使该变量保持不变。
ob将无法引用任何其他对象:final关键字。
不能重新分配。但是您可以更改其内部(如果它是原始的,则是可变的)。所以这有效:
final A ob = new A(); ob.setI(6)
但这不是:
final A ob = new A(); ob = new A();