java - Why can final object be modified? - Stack Overflow
The key to the misunderstanding is in your question's title. It's not the object which is final, it's the variable. The variable's value can't change, but the data within it can. Always remember that when you declare a reference type variable, the value of that variable is a reference, not an object.