Java - Pruebe con Recursos

1. Introducción

Java 7 introdujo la compatibilidad con el try-con-recursos nos permite declarar los recursos que serán utilizados en el bloque try, y para garantizar la ejecución del bloque se cerrará el recurso.

⚠️: instrucción de recurso AutoCloseable debe implementar la interfaz.


2. Utilizar los recursos try-con-

En pocas palabras, para cerrar automáticamente, debe declarar y recursos initialize tratar, de la siguiente manera:

try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {
    writer.println("Hello World");
}

3.-tratar con-recursos en lugar de try-catch-finally

recursos try-con-claras y sencillas en lugar de la tradicional y tedioso try-catch-finally bloque.

Comparemos el siguiente ejemplo de código - es un primer típica try-catch-finally, y luego el nuevo método, utilizando el equivalente de bloques try-con-recursos:

Scanner scanner = null;
try {
    scanner = new Scanner(new File("test.txt"));
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} finally {
    if (scanner != null) {
        scanner.close();
    }
}

Esto se hace utilizando try-con-recursos solución muy sencilla:

try (Scanner scanner = new Scanner(new File("test.txt"))) {
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException fnfe) {
    fnfe.printStackTrace();
}

También el amor que?


4. tratar-con-recursos que tienen una pluralidad de recursos,

Punto y coma separada por una pluralidad de recursos, la pluralidad de recursos puede ser declarado try-con-recursos bloquean:

try (Scanner scanner = new Scanner(new File("testRead.txt"));
    PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) {
    while (scanner.hasNext()) {
    writer.print(scanner.nextLine());
    }
}

Los recursos de la interfaz de aplicación personalizada AutoCloseable

Para construir un recurso personalizado por try-con-Bloquea los recursos procesada correctamente, es necesario implementar tales AutoCloseable se puede cerrar o interfaces y cubiertas cerrar:

public class MyResource implements AutoCloseable {
    @Override
    public void close() throws Exception {
        System.out.println("Closed MyResource");
    }
}

6. secuencia de cierre de Recursos

se definirá primero de todos los recursos (creado), y finalmente se cerró. Echemos un vistazo a un ejemplo:

Recurso 1:

public class AutoCloseableResourcesFirst implements AutoCloseable {
 
    public AutoCloseableResourcesFirst() {
        System.out.println("Constructor -> AutoCloseableResources_First");
    }
 
    public void doSomething() {
        System.out.println("Something -> AutoCloseableResources_First");
    }
 
    @Override
    public void close() throws Exception {
        System.out.println("Closed AutoCloseableResources_First");
    }
}

Recurso 2:

public class AutoCloseableResourcesSecond implements AutoCloseable {
 
    public AutoCloseableResourcesSecond() {
        System.out.println("Constructor -> AutoCloseableResources_Second");
    }
 
    public void doSomething() {
        System.out.println("Something -> AutoCloseableResources_Second");
    }
 
    @Override
    public void close() throws Exception {
        System.out.println("Closed AutoCloseableResources_Second");
    }
}

Uso de los recursos:

private void orderOfClosingResources() throws Exception {
    try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst();
        AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) {
 
        af.doSomething();
        as.doSomething();
    }
}

salida:

Constructor -> AutoCloseableResources_First
constructor -> AutoCloseableResources_Second
Algo -> AutoCloseableResources_First
Algo -> AutoCloseableResources_Second
cerrado AutoCloseableResources_Second
cerrado AutoCloseableResources_First


7.catch y, finalmente,

Trate de bloque con un recurso aún puede incluir un retén y, finalmente, bloques, que funciona igual que el bloque try convencional.

8. Conclusión

En este artículo, se discute cómo utilizar el try-con-recursos, el uso de try-con-recursos reemplazan el try, catch y, finalmente, cómo construir un encargo recursos AutoCloseable y comprenden el fin de cerrar el recurso.


Sin la atención pública sobre el autor, empujar todo tipo de artículos técnicos de calidad / Original ⬇️

Supongo que te gusta

Origin www.cnblogs.com/dongxishaonian/p/12666102.html
Recomendado
Clasificación