English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cada vez que se necesite definir un objeto que no pueda cambiar después de la inicialización, se puede definir un objeto inmutable. No hay reglas específicas para crear objetos inmutables, la idea es restringir el acceso a los campos de la clase después de la inicialización.
Set es una interfaz de la estructura de colección que no permite valores repetidos.
Al crear una colección inmutable, debe recordar lo siguiente:
No deberíamos poder agregar o eliminar elementos.
No deberíamos poder agregar valores nulos a una colección inmutable.
Una vez que se ha creado una colección inmutable, no se puede agregar o eliminar objetos de la misma, pero se puede modificar los objetos almacenados en ella.
Java9El método of() acepta una lista de elementos, crea y devuelve una colección inmutable de elementos dados. Al usar este método, puede crear una colección inmutable en Java.
import java.util.Set; public class ImmutableSet { public static void main(String args[]) { Set<Integer> set = Set.of(1458, 5548, 4587); System.out.println(set); } }
Este método acepta un objeto de colección como parámetro y devuelve su forma inmodificable o inmutable.
Llame a este método pasando el objeto necesario y obteniendo su forma inmutable.
En el siguiente programa Java, creamos un objeto HashSet y lo convertimos a un objeto inmutable utilizando el método unmodifiableSet() e intentamos agregarle elementos.
Dado que lo hemos configurado como inmutable, se generará una excepción en tiempo de ejecución.
import java.util.Collections; import java.util.HashSet; import java.util.Set; public class ImmutableSet { public static void main(String args[]) { Set<Integer> hashSet = new HashSet<Integer>(); //Rellenar HashSet hashSet.add(1124); hashSet.add(3654); hashSet.add(7854); hashSet.add(9945); System.out.println(hashSet); //Convertir el objeto set a un objeto inmutable Set immutable = Collections.unmodifiableSet(hashSet); immutable.add(4466); } }
Resultado de salida
[1124, 3654, 9945, 7854] Excepción en hilo "main" java.lang.UnsupportedOperationException en java.util.Collections$UnmodifiableCollection.add(Unknown Source) en MyPackage.ImmutableSet.main(ImmutableSet.java:19)