Post

Visualizzazione dei post con l'etichetta java.lang.AutoCloseable

Java 7: Autocloseable e Closeable Objects

DOMANDA: Cosa sono gli oggetti AutoCloseable e Closeable? RISPOSTA: Java 7 ha introdotto una comoda caratteristica che è il try-with-resources di cui abbiamo parlato abbondantemente in questo post . Gli oggetti AutoCloseable e Closeable sono delle classi che implementano rispettivamente java.lang.AutoCloseable e java.io.Closeable . L'unico metodo che l'interfaccia obbliga ad implementare è il close() , chiamato alla fine del blocco try-with-resources . Oltre a tutti gli oggetti che da Java 7 implementano già questa interfaccia, è possibile rendere le proprie classi " autochiudenti " semplicemente implementandola a nostra volta. Guardiamo l'esempio: package trywithresources; public class PrimaRisorsa implements AutoCloseable{    @Override    public void close() throws Exception {       System.out.println( "CHIUDO PrimaRisorsa" );    } } E ora vediamo come funziona con un Test : package trywithresources; import j

Java 7: Statement try-with-resources

DOMANDA: Che cos'è lo Statement try-with-resources introdotto con il rilascio di Java 7? RISPOSTA: Una delle problematiche più comuni ai programmatori è la sistematica chiusura delle risorse e/o connessioni aperte. Capita spesso, infatti, che per dimenticanza o meglio per errori e/o eccezioni impreviste non gestite al meglio, alcune risorse rimangano in attesa di una chiusura che non arriverà mai. Per prevenire questi memory leaks  da Java 7 è stato introdotto lo statement try-with-resources che si occupa di chiudere automaticamente le risorse aperte. Guardiamo come funziona: public String leggiRigaDaFile(String path) throws IOException {     try (BufferedReader br =                     new BufferedReader( new FileReader(path))) {         return br.readLine();     } } La novità è che c'è un blocco try (in questo caso senza catch e finally ) con uno o più argomenti tra parentesi. Questi parametri rappresentano un oggetto risorsa che Java garant