Pattern matching in switch
Sostituisci le catene if-else instanceof con pattern di tipo switch puliti.
Confronto Codice
✕ Java 8
String format(Object obj) {
if (obj instanceof Integer i)
return "int: " + i;
else if (obj instanceof Double d)
return "double: " + d;
else if (obj instanceof String s)
return "str: " + s;
return "unknown";
}
✓ Java 21+
String format(Object obj) {
return switch (obj) {
case Integer i -> "int: " + i;
case Double d -> "double: " + d;
case String s -> "str: " + s;
default -> "unknown";
};
}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Dispatch strutturato
Lo switch rende la struttura di branching esplicita e scansionabile.
Forma espressione
Restituisce un valore direttamente — nessuna variabile mutabile necessaria.
Esaustività
Il compilatore verifica che tutti i tipi siano gestiti.
Approccio Vecchio
Catena if-else
Approccio Moderno
Pattern di tipo
Dal JDK
21
Difficoltà
Intermedio
Supporto JDK
Pattern matching in switch
Disponibile
Ampiamente disponibile dal JDK 21 LTS (settembre 2023)
Come funziona
Il pattern matching in switch permette di corrispondere direttamente sui tipi, combinando il test del tipo, il cast e il binding in un'unica etichetta case concisa. Il compilatore verifica la completezza.
Documentazione Correlata