Interfaz que se puede cerrar en Java

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

Hierarchy of Closeable interface

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

  1. Closeable se introdujo con JDK 5 , mientras que AutoCloseable se introdujo con JDK 7+.
  2. Closeable amplía AutoCloseable y Closeable se dirige principalmente a flujos de E/S.
  3. Closeable extiende IOException mientras que AutoCloseable extiende Exception.
  4. 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.
  5. 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");
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *