Documente Academic
Documente Profesional
Documente Cultură
Pe fluxuri de ieșire OutputStream apelarea explicită a metodei close implică și operația de flush.
În următorul exemplu de cod, se scrie un text într-un fișier text folosind un flux de tip FileWriter.
if (out != null) {
try {
out.close();
Se poate observa că atât write cât și close pot arunca o excepție de tip IOException, așadar au
nevoie de câte un bloc try-catch separat, pentru a putea diferenția cele două situații. De asemenea,
obiectul out de tip FileWriter este în continuare accesibil în cod, chiar și după apelul close.
Introducerea lui out în primul try ar rezolva problema aceasta dar ar face în același timp și out
invizibil în finally. Pentru astfel de situații a fost introdus începând cu Java 1.7 instrucțiunea
„try-with-resources”.
1
out.write("Hello world!!");
} catch (IOException ex) {
ex.printStackTrace();
}
// No close statements required
// "out" not accessible here
}
}
În acest mod codul devine mai scurt, obiectul out este vizibil doar în interiorul blocului try iar close
este apelat automat.
Interfața AutoCloseable este introdusă cu Java 1.7 și conține doar metoda close() a cărui scop este
de a închide o resursă în momentul în carea aceasta nu mai este necesară. Majoritatea claselor care
lucrează cu surse de date ce necesită o închidere după terminarea utilizări, implementează interfața
java.lang.AutoCloseable (de exemplu, toate fluxurile de date).
Metoda close este apelată automate pe obiecte gestionate prin instrucțiunea try-with-resource. Cu
alte cuvinte, în cadrul instrucțiuni try-with-resource se poate crea un obiect ce implementează
interfața java.lang.AutoCloseable.
Dacă se creează mai multe resurse în try-with-resource, atunci acestea trebuie se fie separate prin
punt și virgulă.