Material adicional: Curso Fundamentos de Java
Episodio 4
Tu copia defensiva no protege nada | El bug del aliasing en Java
List.copyOf te da una lista nueva… con las mismas flechas adentro. Copiaste el contenedor, no el contenido: un setPrecio desde cualquier parte cambia el catálogo y el respaldo al mismo tiempo. La solución no es copiar más profundo, es que los objetos no puedan cambiar.