Can someone clarify the significance of the below code.
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());
}
}
The object A is declared as final, but I can change value of this object’s instance variable and also retrive the updated value. So what are the significance of declaring an object as final.
I am aware about declaring primitive datatype as final, which makes that variable constant.
ob will not be able to reference any other object : final keyword.
It can not be reassigned. But you can change its internals (it is mutable, if it was originally).
So this works :
but this doesn’t :