Могут ли нефинализированные аргументы или возвращенные объекты изменять объект?неизменяемые конечные аргументы и возвращаемые значения
Что разница, изменив следующим образом:
public final class MyImmutableClass {
public final MyObject doStuff(final SomeObject someObject) {
...
}
}
к этому:
public final class MyImmutableClass {
public MyObject doStuff(SomeObject someObject) {
...
}
}
Когда цель состоит в том, чтобы сделать MyImmutableClass
действительно неизменен.
После внесения изменений, MyImmutableClass
по-прежнему считается неизменным? Если нет, то какое состояние можно было бы изменить путем внесения изменений?
IIRC делает класс окончательным не влияет на переменчивость. Это просто означает, что класс не может быть подклассифицирован –
Возможный дубликат http://stackoverflow.com/questions/2236599/final-keyword-in-method-parameters? – Sweeper