PMD tiene una regla llamada ArrayIsStoredDirectly en el conjunto de reglas de seguridad Sun:razonamiento detrás de la regla ArrayIsStoredDirectly del PMD
de constructores y métodos que reciben las matrices debe clonar objetos y almacenar la copia. Esto evita que los cambios futuros del usuario afecten la funcionalidad interna.
Aquí es su ejemplo:
public class Foo {
private String [] x;
public void foo (String [] param) {
// Don't do this, make a copy of the array at least
this.x=param;
}
}
No creo que entiendo por completo el razonamiento detrás de esta regla. ¿Es porque los valores en el conjunto pasado pueden ser alterados en otro lugar? ¿Hay alguna diferencia entre pasar una colección o pasar una matriz con respecto a esto?
No hay diferencia en lo que respecta a pasar matriz vs Colección. Una pequeña diferencia en el tratamiento seguro de matrices y colecciones es que con matrices está bien llamar a .clone(), pero no debe confiar en el método .clone() de una colección. –