Torna al blog
JavaBackendLinguaggi

Java moderno: record, sealed e pattern matching

MUSTNODE SRL8 min di lettura

Java e diventato piu conciso

Per anni Java ha avuto fama di linguaggio verboso. Le versioni recenti hanno introdotto costrutti che riducono il codice boilerplate mantenendo la robustezza che ne ha decretato il successo enterprise.

Record: dati immutabili senza boilerplate

Un record definisce una classe portatrice di dati con costruttore, getter, equals, hashCode e toString generati automaticamente.

public record Punto(int x, int y) {}

var p = new Punto(3, 4);
System.out.println(p.x()); // 3

Classi sealed

Le classi sealed controllano quali tipi possono estenderle, rendendo esplicite le gerarchie chiuse e abilitando controlli esaustivi.

public sealed interface Forma permits Cerchio, Rettangolo {}
public record Cerchio(double raggio) implements Forma {}
public record Rettangolo(double base, double altezza) implements Forma {}

Pattern matching su switch

Combinando record e sealed, il pattern matching rende elegante la gestione dei casi:

double area = switch (forma) {
  case Cerchio c -> Math.PI * c.raggio() * c.raggio();
  case Rettangolo r -> r.base() * r.altezza();
};

Il compilatore verifica che tutti i casi siano coperti: niente piu default dimenticati.

Conclusione

Record, sealed e pattern matching avvicinano Java a uno stile piu dichiarativo. In MUSTNODE li usiamo per scrivere backend enterprise piu chiari e meno soggetti a errori.

Articoli correlati

Altri approfondimenti dalla categoria Backend & Java.