English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

教程基础Java

Controllo dei flussi Java

Array Java

Java orientata agli oggetti (I)

Java orientata agli oggetti (II)

Java orientata agli oggetti (III)

Gestione delle eccezioni Java

List Java

Queue Java (coda)

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti di Java

Miglioramenti di try-with-resources in Java 9

Nuove funzionalità Java 9

try-with-resources è un nuovo meccanismo di gestione delle eccezioni nel JDK 7, che rende facile chiudere le risorse utilizzate nel blocco try-catch. Si intende per risorsa (resource) l'oggetto che deve essere chiuso una volta completato il programma. La dichiarazione try-with-resources garantisce che ogni risorsa venga chiusa alla fine della dichiarazione. Tutte le classi che implementano l'interfaccia java.lang.AutoCloseable (che include tutte le classi che implementano java.io.Closeable) possono essere utilizzate come risorse.

La dichiarazione try-with-resources è stata migliorata nel JDK 9. Se hai già una risorsa che è final o equivalente a una variabile final, puoi utilizzarla nella dichiarazione try-with-resources senza dover dichiarare una nuova variabile nella dichiarazione try-with-resources.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
 
public class Tester {
   public static void main(String[] args) throws IOException {
      System.out.println(readData("test"));}}
   } 
   static String readData(String message) throws IOException {
      Reader inputString = new StringReader(message);
      BufferedReader br = new BufferedReader(inputString);
      try (BufferedReader br1 = br) {
         return br1.readLine();
      }
   }
}

Il risultato dell'output è:

test

Nell'esempio sopra, dobbiamo dichiarare la risorsa br1 nel blocco try prima di essere in grado di utilizzarla.

In Java 9, non è necessario dichiarare la risorsa br1 per utilizzarla e ottenere lo stesso risultato.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
 
public class Tester {
   public static void main(String[] args) throws IOException {
      System.out.println(readData("test"));}}
   } 
   static String readData(String message) throws IOException {
      Reader inputString = new StringReader(message);
      BufferedReader br = new BufferedReader(inputString);
      try (br) {
         return br.readLine();
      }
   }
}

Il risultato dell'esecuzione è:

test

Quando si gestiscono risorse che devono essere chiuse, utilizzare la struttura try-with-resources invece di try-finally. Il codice generato è più conciso, più chiaro e genera eccezioni più utili. La struttura try-with-resources è più facile da scrivere e meno incline agli errori rispetto a quella try-finally, che in realtà è impossibile da utilizzare.

Nuove funzionalità Java 9