📢 Nuovo Corso Laravel API disponibile!

Esercizi sulle Classi Immutabili in Java

Ecco degli esercizi con soluzione per praticare la creazione e l’uso delle classi immutabili in Java.

Esercizio 1: Creazione di una Classe Immutabile

Creare una semplice classe immutabile `Persona` con attributi `nome` e `età`.
public final class Persona {
private final String nome;
private final int eta;
public Persona(String nome, int eta) {
this.nome = nome;
this.eta = eta;
}
public String getNome() {
return nome;
}
public int getEta() {
return eta;
}
public static void main(String[] args) {
Persona persona = new Persona("Mario", 30);
System.out.println("Nome: " + persona.getNome());
System.out.println("Età: " + persona.getEta());
}
}

Esercizio 2: Classe Immutabile con Oggetti Mutabili

Creare una classe immutabile `Indirizzo` che contiene un attributo mutabile `StringBuilder` e rendere l'oggetto immutabile.
public final class Indirizzo {
private final StringBuilder indirizzo;
public Indirizzo(String indirizzo) {
this.indirizzo = new StringBuilder(indirizzo);
}
public String getIndirizzo() {
return indirizzo.toString();
}
public static void main(String[] args) {
Indirizzo ind = new Indirizzo("Via Roma 1");
System.out.println("Indirizzo: " + ind.getIndirizzo());
}
}

Esercizio 3: Classe Immutabile con Oggetti di Tipo Array

Creare una classe immutabile `ClasseConArray` che contiene un array e rendere l'oggetto immutabile.
import java.util.Arrays;
public final class ClasseConArray {
private final int[] valori;
public ClasseConArray(int[] valori) {
this.valori = valori.clone();
}
public int[] getValori() {
return valori.clone();
}
public static void main(String[] args) {
int[] array = {1, 2, 3};
ClasseConArray obj = new ClasseConArray(array);
System.out.println("Valori: " + Arrays.toString(obj.getValori()));
}
}

Esercizio 4: Classe Immutabile con Oggetti di Tipo List

Creare una classe immutabile `ClasseConList` che contiene una lista e rendere l'oggetto immutabile.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public final class ClasseConList {
private final List<String> valori;
public ClasseConList(List<String> valori) {
this.valori = new ArrayList<>(valori);
}
public List<String> getValori() {
return Collections.unmodifiableList(valori);
}
public static void main(String[] args) {
List<String> lista = new ArrayList<>();
lista.add("a");
lista.add("b");
ClasseConList obj = new ClasseConList(lista);
System.out.println("Valori: " + obj.getValori());
}
}

Esercizio 5: Classe Immutabile con Oggetti di Tipo Map

Creare una classe immutabile `ClasseConMap` che contiene una mappa e rendere l'oggetto immutabile.
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public final class ClasseConMap {
private final Map<String, String> valori;
public ClasseConMap(Map<String, String> valori) {
this.valori = new HashMap<>(valori);
}
public Map<String, String> getValori() {
return Collections.unmodifiableMap(valori);
}
public static void main(String[] args) {
Map<String, String> mappa = new HashMap<>();
mappa.put("chiave1", "valore1");
mappa.put("chiave2", "valore2");
ClasseConMap obj = new ClasseConMap(mappa);
System.out.println("Valori: " + obj.getValori());
}
}

Esercizio 6: Classe Immutabile con Oggetti di Tipo Date

Creare una classe immutabile `ClasseConData` che contiene un oggetto `Date` e rendere l'oggetto immutabile.
import java.util.Date;
public final class ClasseConData {
private final Date data;
public ClasseConData(Date data) {
this.data = new Date(data.getTime());
}
public Date getData() {
return new Date(data.getTime());
}
public static void main(String[] args) {
Date data = new Date();
ClasseConData obj = new ClasseConData(data);
System.out.println("Data: " + obj.getData());
}
}

Esercizio 7: Classe Immutabile con Oggetti di Tipo Custom

Creare una classe immutabile `ClasseConCustom` che contiene un oggetto di tipo custom e rendere l'oggetto immutabile.
public final class ClasseConCustom {
private final CustomOggetto customOggetto;
public ClasseConCustom(CustomOggetto customOggetto) {
this.customOggetto = new CustomOggetto(customOggetto.getValore());
}
public CustomOggetto getCustomOggetto() {
return new CustomOggetto(customOggetto.getValore());
}
public static void main(String[] args) {
CustomOggetto co = new CustomOggetto(5);
ClasseConCustom obj = new ClasseConCustom(co);
System.out.println("CustomOggetto: " + obj.getCustomOggetto().getValore());
}
}
class CustomOggetto {
private final int valore;
public CustomOggetto(int valore) {
this.valore = valore;
}
public int getValore() {
return valore;
}
}

Esercizio 8: Classe Immutabile con Costruttore Statico

Creare una classe immutabile `ClasseConCostruttoreStatico` che utilizza un metodo statico per creare un'istanza.
public final class ClasseConCostruttoreStatico {
private final String nome;
private final int eta;
private ClasseConCostruttoreStatico(String nome, int eta) {
this.nome = nome;
this.eta = eta;
}
public static ClasseConCostruttoreStatico creaIstanza(String nome, int eta) {
return new ClasseConCostruttoreStatico(nome, eta);
}
public String getNome() {
return nome;
}
public int getEta() {
return eta;
}
public static void main(String[] args) {
ClasseConCostruttoreStatico obj = ClasseConCostruttoreStatico.creaIstanza("Luigi", 25);
System.out.println("Nome: " + obj.getNome());
System.out.println("Età: " + obj.getEta());
}
}