Middle
183
O que é a interface AutoCloseable e como funciona a construção try-with-resources em Java?
Resposta da IA
sobes.tech IA
AutoCloseable - interface em Java que representa um recurso que deve ser fechado após uso. Contém um método close(), que pode lançar uma exceção.
A construção try-with-resources em Java destina-se a fechar automaticamente recursos que implementam a interface AutoCloseable.
Sintaxe do try-with-resources:
try (ResourceType resource1 = new ResourceType(...),
AnotherResourceType resource2 = new AnotherResourceType(...)) {
// Uso dos recursos
} catch (Exception e) {
// Tratamento de exceções
}
Como funciona:
- Os recursos declarados entre parênteses após
trydevem implementarAutoCloseable. - Esses recursos são inicializados antes de executar o corpo do
try. - O método
close()de cada recurso é chamado após a conclusão do blocotry, seja ele bem-sucedido ou com exceção. - Se ocorrerem exceções ao fechar os recursos, elas são suprimidas da exceção principal do
try(se houver). As exceções suprimidas podem ser obtidas através do métodogetSuppressed()da exceção principal. - A ordem de fechamento dos recursos é inversa à sua declaração na cláusula
try.
Vantagens do try-with-resources:
- Reduz código boilerplate: Não é necessário chamar
close()explicitamente em um blocofinally. - Aumenta a confiabilidade: Garante o fechamento de recursos mesmo em caso de exceções.
- Melhora a legibilidade: O código torna-se mais conciso e claro.
Exemplo de uso:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}