Un Closeable es un origen o destino de los datos que deben cerrarse. El método close() se invoca cuando necesitamos liberar recursos que están retenidos por objetos como archivos abiertos. Es una de las interfaces importantes para transmitir clases. La interfaz cerrable se introdujo en JDK 5 y se define en java.io. Desde JDK 7+ , se supone que debemos usar la interfaz AutoCloseable. La interfaz cerrable
La jerarquía de la interfaz que se puede cerrar
el cerrable
Declaración
public interface Closeable extends AutoCloseable { public void close() throws IOException; }
Implementando la interfaz Closeable
Método close() de la interfaz que se puede cerrar
El método close() se invoca para liberar los recursos que contiene el objeto. Si la secuencia ya está cerrada, la invocación del método de cierre no tiene ningún efecto.
Sintaxis
Nota: Closeable es idempotente, lo que significa que llamar al método close() más de una vez no tiene efectos secundarios.
Closeable arroja solo IOException y no se puede cambiar sin romper el código heredado. Por lo tanto, se introdujo AutoCloseable ya que puede generar una excepción.
Superinterfaz de cerrable:
- Cierre automático
Subinterfaces de Closeable:
- Canal de bytes asíncrono
- Canal asíncrono
- ByteChannel
- Canal
- ImageInputStream
- ImageOutputStream
- Canal de multidifusión
Implementación de clases:
- ResumenSeleccionableChannel
- Resumen Selector
- BufferedReader
- BufferedWriter
- BufferedInputStream
- BufferedOutputStream
- CheckedInputStream
- CheckedOutputStream
Cerrable vs Autocerrable
- Closeable se introdujo con JDK 5 , mientras que AutoCloseable se introdujo con JDK 7+.
- Closeable amplía AutoCloseable y Closeable se dirige principalmente a flujos de E/S.
- Closeable extiende IOException mientras que AutoCloseable extiende Exception.
- La interfaz que se puede cerrar es idempotente (llamar al método close() más de una vez no tiene efectos secundarios), mientras que AutoCloseable no proporciona esta característica.
- AutoCloseable se introdujo especialmente para trabajar con declaraciones de prueba con recursos . Dado que Closeable implementa AutoCloseable, cualquier clase que implemente Closeable también implementa la interfaz AutoCloseable y puede usar los recursos de prueba para cerrar los archivos.
try(FileInputStream fin = new FileInputStream(input)) { // Some code here }
Uso de bloque de prueba con cerrable
Dado que Closeable hereda las propiedades de la interfaz AutoCloseable, la clase que implementa Closeable también puede usar el bloque de prueba con recursos.
Java
// Java program to illustrate // Automatic Resource Management // in Java with multiple resource import java.io.*; class Resource { public static void main(String s[]) { // note the order of opening the resources try (Demo d = new Demo(); Demo1 d1 = new Demo1()) { int x = 10 / 0; d.show(); d1.show1(); } catch (ArithmeticException e) { System.out.println(e); } } } // custom resource 1 class Demo implements Closeable { void show() { System.out.println("inside show"); } public void close() { System.out.println("close from demo"); } } // custom resource 2 class Demo1 implements Closeable { void show1() { System.out.println("inside show1"); } public void close() { System.out.println("close from demo1"); } }
close from demo1 close from demo java.lang.ArithmeticException: / by zero
Métodos de interfaz cerrable
Método |
Descripción |
---|---|
cerca() | Cierra este flujo y libera todos los recursos del sistema asociados con él. |
Publicación traducida automáticamente
Artículo escrito por goelshubhangi3118 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA