Considerando o encapsulamento de objetos, os getters devem retornar uma propriedade imutável?

Quando um getter retorna uma propriedade, como retornar umList de outros objetos relacionados, essa lista e seus objetos devem ser imutáveis ​​para evitar código fora da classe, alterando o estado desses objetos, sem o conhecimento do objeto pai principal?

Por exemplo, se umContact objeto, tem umgetDetails getter, que retorna umList doContactDetails objetos, então qualquer código chamando esse getter:

É possível removerContactDetail objetos dessa lista sem oContact objeto sabendo disso.pode mudar cadaContactDetail objeto sem oContact objeto sabendo disso.

Então, o que devemos fazer aqui? Devemos confiar apenas no código de chamada e retornar facilmente objetos mutáveis, ou ir pela pior maneira e fazer uma classe imutável para cada classe mutável?

questionAnswers(11)

yourAnswerToTheQuestion