Junior
¿Qué son los objetos inmutables?
sobes.tech AI
Respuesta de la IA
Objetos cuyo estado no puede ser modificado después de su creación. Al intentar modificarlos, siempre se crea un nuevo objeto.
Ejemplos de clases inmutables en Java:
String- Envoltorios primitivos (
Integer,Long,Boolean, etc.) - Algunas colecciones (
Collections.unmodifiableList(),ImmutableListde Guava)
Ventajas:
- Seguridad en hilos (no requieren sincronización en acceso concurrente).
- Facilidad de uso (fácil de entender el estado del objeto).
- Pueden usarse como claves en HashMap o elementos en Set (su hashCode y equals() no cambian).
- Mejoran el rendimiento mediante caché y reutilización.
Desventajas:
- Crear un nuevo objeto en cada modificación puede ser ineficiente para cambios frecuentes.
Creación propia:
- Declarar la clase como
final. - Declarar todos los campos como privados y
final. - No proporcionar métodos setters.
- En los getters para campos mutables, devolver copias en lugar de referencias a los objetos originales.
public final class ImmutablePerson {
private final String name;
private final int age;
private final List<String> hobbies;
public ImmutablePerson(String name, int age, List<String> hobbies) {
this.name = name;
this.age = age;
// Crear una copia para evitar cambios externos
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Devolver una lista inmutable
return Collections.unmodifiableList(hobbies);
}
}