Migrazione da Java 8 a Java 17: guida completa alle nuove funzionalità
Java è evoluto significativamente dal rilascio di Java 8 nel 2014. Java 17, rilasciato nel 2021, porta con sé una serie di nuove funzionalità e miglioramenti che possono migliorare la leggibilità, la manutenibilità e le prestazioni del codice. Questa guida illustra le principali funzionalità introdotte tra Java 8 e Java 17 e fornisce esempi di come migrare il codice per sfruttare queste nuove capacità.
Classi chiuse: Java 17 introduce le classi chiuse, una potente caratteristica che migliora il modello di programmazione orientata agli oggetti di Java e funziona perfettamente con il pattern matching nelle espressioni switch.
Nuova sintassi: La parola chiave sealed
dichiara una classe o interfaccia chiusa e la clausola permits
specifica le sottoclassi consentite:
public sealed interface Shape permits Circle, Rectangle, Triangle {}
Quando usarle: Utilizzare le classi chiuse quando si desidera:
- Restringere le estensioni della gerarchia delle classi
- Definire un insieme fisso di sottotipi
- Abilitare il pattern matching esaustivo nelle espressioni switch
- Modulare concetti specifici di dominio in modo più accurato
Esempi: Gerarchia Shape con switch esaustivo:
sealed interface Shape permits Circle, Rectangle, Triangle {}
record Circle(double radius) implements Shape {}
record Rectangle(double width, double height) implements Shape {}
record Triangle(double base, double height) implements Shape {}
static double calculateArea(Shape shape) {
return switch (shape) {
case Circle c -> Math.PI * c.radius() * c.radius();
case Rectangle r -> r.width() * r.height();
case Triangle t -> 0.5 * t.base() * t.height();
};
}