If you build an object, say "Intruder" and define it as final, you would still have the ability to change this objects fields which are not final within the class's definition (i.e Intruder.power = 50;). The restriction in that case, will be about the Intruder's object reference and not inner values.
My question is: what about Strings as an example? If you create a String object, like "String s = new String("str"); Is there a way to change the string's "str" value? If not, why is that? isn't it possible to change the literal value of that String object without changing it's reference?
Thank you!