¿Se puede cambiar el valor de un objeto inmutable?
En Java un objeto es considerado inmutable cuando su estado no puede cambiar después de haber sido creado. El uso de objetos inmutables es ampliamente aceptado como una buena estrategia para la creación de código simple y confiable.
Los objetos inmutables son particularmente útiles en aplicaciones con concurrencia. Dado que no pueden cambiar su estado no son alterados por la interferencia entre hilos o threads o ser leídos en un estado inconsistente. La clase java.lang.String y la clase java.lang.Integer son ejemplos de objetos inmutables. Estas son algunas de las características de los objetos inmutables que sirven para simplificar la programación:
- Permiten probar y construir de una forma mas sencilla.
- Son automáticamente thread-safe.
- No requieren un constructor de copia.
- No quieren la implementación de clone.
- Funcionan como un almacén de su propio valor de retorno.
- No requieren ser copiados de forma preventiva.
- Son las llaves en clases de mapeo y permiten insertar elementos (Dado que el valor de estos objetos no cambia mientras son almacenados en una colección) .
- Permanecen invariantes desde la invocación de sus constructores y no requieren ser revisados.
- Si un objeto Inmutable lanza una excepción nunca quedará en un estado indeseado o indeterminado.