final 키워드를 무작위로 붙이다보니 변수나 나중에 바뀌지 않을 녀석에 붙이는 것은 이해가 됐다. 하지만 왜 객체에 붙이고 나서 속성값이 변하는 곳에도 붙여도 되는 것일까?에 대한 의문이 들었다.
놀랍게도 객체 변수에 final로 선언하면 그 변수에 다른 참조 값을 지정할 수 없게 되기 때문에 immutable하다는 것이지 객체 자체가 immutable하다는 의미는 아니라고 한다. 객체의 속성은 변경 가능하다!
따라서, 객체를 선언하고 (머시기 머시기 = new 머시기()) final 키워드를 붙여도 머시기의 속성은 변경하다는 것이 설명이 되었다!