Considérese este fragmento de código:Buenas Prácticas para Volviendo referencias a objetos
class MyClass{
private List myList;
//...
public List getList(){
return myList;
}
}
como Java pasa referencias de objetos por valor, mi opinión es que cualquier objeto llamando getList()
obtendrá una referencia a myList
, lo que le permite modificar myList
a pesar siendo private
. ¿Es eso correcto?
Y, si es correcto, debería estar utilizando
return new LinkedList(myList);
para crear una copia y pasar de nuevo una referencia a la copia, en lugar del original, con el fin de evitar el acceso no autorizado a la lista referenciada por myList
?
técnicamente, ningún cliente externo podrá cambiar el valor del campo myList en su clase. Siempre será un control/referencia a List, haciendo referencia a la lista a la que algún código dentro de MyClass lo configuró.El cliente externo podrá modificar el contenido de esa lista –
Sí, eso es lo que quise decir, pero se volvió un poco descuidado con mi explicación. Lo editaré – chrisbunney
+1 Miro A para una aclaración correcta. Y sí, su solución al crear una copia de la lista es correcta (por lo que quiere lograr). – xagyg