English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ogni volta che è necessario creare un oggetto che non può essere modificato dopo l'inizializzazione, si può definire un oggetto immutabile. Non ci sono regole specifiche per la creazione di oggetti immutabili, l'idea è limitare l'accesso ai campi della classe dopo l'inizializzazione.
Set è un'interfaccia della raccolta della struttura, che non permette valori ripetuti.
Creando una raccolta immutabile, è necessario ricordare i seguenti punti:
Non dovremmo essere in grado di aggiungere o rimuovere elementi.
Non dovremmo essere in grado di aggiungere valori vuoti a una raccolta immutabile.
Una volta creato un set immutabile, non è possibile aggiungere o rimuovere oggetti, ma è possibile modificare gli oggetti memorizzati al suo interno.
Il metodo of() di Java 9 accetta una lista di elementi, crea e restituisce una raccolta immutabile dei dati forniti. Utilizzando questo metodo, è possibile creare raccolte immutabili in 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); } }
Questo metodo accetta un oggetto di raccolta come parametro e restituisce la sua forma non modificabile, ovvero immutabile.
Questo metodo può essere chiamato passando l'oggetto necessario e ricevendo la sua forma immutabile.
Nel seguente programma Java, abbiamo creato un oggetto HashSet e l'abbiamo convertito in un oggetto immutabile utilizzando il metodo unmodifiableSet() e abbiamo tentato di aggiungere elementi a esso.
因为我们将其设置为不可变的,所以将生成运行时异常。
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>(); //填充HashSet hashSet.add(1124); hashSet.add(3654); hashSet.add(7854); hashSet.add(9945); System.out.println(hashSet); //将set对象转换为不可变对象 Set immutable = Collections.unmodifiableSet(hashSet); immutable.add(4466); } }
输出结果
[1124, 3654, 9945, 7854] Exception in thread "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Unknown Source) at MyPackage.ImmutableSet.main(ImmutableSet.java:19)