Início‎ > ‎

Não armazenar vetores recebidos como parâmetros

Para evitar que mudanças feitas externamente a um objeto afetem seu estado, todos os vetores (arrays) recebidos como parâmetro devem ser copiados antes de serem utilizados ou armazenados localmente. Sem esta precaução, um objeto externo que altere algum dos valores armazenados no vetor pode causar efeitos inesperados no funcionamento do objeto que recebeu o vetor como parâmetro.

Ao copiar o vetor recebido, é necessário ter cuidado para que os objetos contidos no vetor também sejam copiados. Ou seja, se o vetor contiver apenas tipos primitivos, basta copiar o vetor, mas, se não for o caso, é necessário copiar também o conteúdo de cada objeto contido no vetor.

Para fazer as cópias de vetores de tipos primitivos, pode-se usar o método clone(). Para cópias de vetores de objetos, é necessário implementar o processo de cópia levando em conta a necessidade de clonar cada um dos objetos contidos no vetor.

É importante ressaltar que as considerações acima também são válidas para coleções (que herdam de java.util.Collection). No caso de coleções, é necessário lembrar que o valor de hash de uma coleção depende do seu conteúdo. Ou seja, a cópia da coleção terá um valor de hash diferente. Se o valor de hash da coleção for necessário, a cópia não pode ser feita.

Comments