Record ed enum
Due strumenti per dati semplici
Sezione intitolata “Due strumenti per dati semplici”Java offre strumenti che rendono piu comodo rappresentare alcuni dati.
In questa pagina vediamo:
enum, per valori fissirecord, per oggetti semplici e immutabili
Sono concetti piu moderni rispetto alle basi, ma molto utili quando il modello dei dati e chiaro.
Un enum rappresenta un insieme chiuso di valori possibili.
Esempio:
public enum Giorno { LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA}Una variabile di tipo Giorno puo contenere solo uno di questi valori.
Giorno oggi = Giorno.LUNEDI;Perche usare enum
Sezione intitolata “Perche usare enum”Senza enum potresti usare stringhe:
String stato = "pagato";Ma potresti anche sbagliare:
String stato = "pagatto";Con un enum, Java controlla i valori validi.
public enum StatoOrdine { NUOVO, PAGATO, SPEDITO, CONSEGNATO}Uso:
StatoOrdine stato = StatoOrdine.PAGATO;enum con switch
Sezione intitolata “enum con switch”StatoOrdine stato = StatoOrdine.SPEDITO;
switch (stato) { case NUOVO: System.out.println("Ordine creato"); break; case PAGATO: System.out.println("Pagamento ricevuto"); break; case SPEDITO: System.out.println("Ordine in viaggio"); break; case CONSEGNATO: System.out.println("Ordine consegnato"); break;}Gli enum sono ottimi quando hai un elenco limitato e conosciuto di scelte.
Un record serve a rappresentare dati semplici.
public record Prodotto(String nome, double prezzo) {}Questa riga crea automaticamente:
- campi privati e finali
- costruttore
- metodi per leggere i valori
toStringequalshashCode
Usare un record
Sezione intitolata “Usare un record”public class EsempioRecord { public static void main(String[] args) { Prodotto prodotto = new Prodotto("Quaderno", 2.50);
System.out.println(prodotto.nome()); System.out.println(prodotto.prezzo()); System.out.println(prodotto); }}Output:
Quaderno2.5Prodotto[nome=Quaderno, prezzo=2.5]I metodi di lettura hanno lo stesso nome dei campi: nome() e prezzo().
Record immutabili
Sezione intitolata “Record immutabili”Un record e pensato per dati immutabili: dopo la creazione, non cambi i campi.
Non fai:
prodotto.prezzo = 3.00; // non validoSe ti serve un prodotto con prezzo diverso, crei un nuovo record.
Quando usarli
Sezione intitolata “Quando usarli”Usa enum quando un valore puo essere scelto da un insieme fisso:
- giorni della settimana
- stati di un ordine
- livelli di priorita
Usa record quando vuoi trasportare dati semplici senza scrivere una classe lunga:
- prodotto con nome e prezzo
- punto con x e y
- persona con nome ed eta
Se l’oggetto deve cambiare spesso o avere molta logica interna, una classe normale puo essere piu adatta.