Rumah  >  Artikel  >  Java  >  Bagaimana untuk menutup sumber dengan anggun menggunakan cuba-dengan-sumber dalam Java 7

Bagaimana untuk menutup sumber dengan anggun menggunakan cuba-dengan-sumber dalam Java 7

WBOY
WBOYasal
2023-07-29 10:09:231599semak imbas

Cara menggunakan cuba-dengan-sumber untuk menutup sumber dalam Java 7 dengan anggun

Di Java, kita selalunya perlu menggunakan beberapa sumber, seperti fail, sambungan rangkaian, sambungan pangkalan data, dsb. Selepas menggunakan sumber ini, untuk melepaskan sumber dan mengelakkan kebocoran memori, kita perlu menutup sumber ini secara eksplisit dalam program. Di Java 7, gula sintaksis baharu - cuba-dengan-sumber - diperkenalkan, membolehkan kami menutup sumber dengan lebih anggun.

Sebelum Java 7, kami biasanya menggunakan try-catch-finally untuk menutup sumber. Sebagai contoh, apabila kita membaca fail, kod mungkin kelihatan seperti ini:

FileInputStream fis = null;
try {
    fis = new FileInputStream("file.txt");
    // 读取文件的操作
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fis != null) {
        try {
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Kaedah ini kelihatan lebih rumit dan memerlukan menulis kod tambahan untuk mengendalikan penutupan sumber dan pengecualian mungkin berlaku menyebabkan sumber tidak ditutup dalam masa .

Dalam Java 7, kita boleh menggunakan pernyataan cuba-dengan-sumber untuk menutup sumber dengan lebih ringkas. Menggunakan cuba-dengan-sumber, kita boleh meletakkan operasi tutup dalam kurungan pernyataan cuba, dan Java akan menutup sumber secara automatik pada penghujung pernyataan cuba. Sebagai contoh, kod di atas boleh ditulis semula sebagai:

try (FileInputStream fis = new FileInputStream("file.txt")) {
    // 读取文件的操作
} catch (IOException e) {
    e.printStackTrace();
}

Dalam kod di atas, kami menggunakan cuba-dengan-sumber untuk mengisytiharkan objek FileInputStream Apabila pernyataan cuba tamat, Java akan secara automatik memanggil kaedah tutup FileInputStream untuk menutup sumber. Jika pengecualian berlaku dalam blok pernyataan cuba, pernyataan tangkapan akan menangkap dan mengendalikan pengecualian.

cuba-dengan-sumber juga boleh mengisytiharkan berbilang sumber pada masa yang sama, dan ia akan ditutup secara berurutan mengikut susunan pengisytiharan. Sebagai contoh, kami membaca kandungan dua fail pada masa yang sama:

try (FileInputStream fis1 = new FileInputStream("file1.txt");
    FileInputStream fis2 = new FileInputStream("file2.txt")) {
    // 读取文件的操作
} catch (IOException e) {
    e.printStackTrace();
}

Dalam kod di atas, kami menggunakan koma bertitik untuk memisahkan pengisytiharan berbilang sumber, dan ia akan ditutup satu demi satu pada penghujung pernyataan percubaan.

Selain itu, kami juga boleh menggunakan kelas tersuai untuk menutup sumber secara automatik. Anda hanya perlu melaksanakan antara muka AutoCloseable dalam kelas tersuai anda dan mengatasi kaedah tutup. Sebagai contoh, kami mencipta kelas sambungan rangkaian tersuai:

public class MyConnection implements AutoCloseable {
    public MyConnection() {
        // 进行连接的操作
    }
    
    // 执行一些操作
    
    @Override
    public void close() throws Exception {
        // 关闭连接的操作
    }
}

Kemudian, apabila menggunakan kelas tersuai ini, kami boleh mengisytiharkannya secara langsung dalam pernyataan cuba-dengan-sumber:

try (MyConnection connection = new MyConnection()) {
    // 使用connection进行一些操作
} catch (Exception e) {
    e.printStackTrace();
}

Pada penghujung kenyataan cuba-dengan-sumber , Java secara automatik akan memanggil kaedah tutup kelas MyConnection untuk menutup sambungan.

Ringkasnya, cuba-dengan-sumber ialah cara yang elegan untuk menutup sumber, yang boleh membantu kami mengeluarkan sumber dengan lebih ringkas dalam kod dan mengelakkan masalah kebocoran sumber biasa. Ia bukan sahaja boleh menutup beberapa sumber terbina dalam Java secara automatik, tetapi juga menggunakan kelas tersuai untuk menutup sumber secara automatik. Apabila menulis kod, kita harus menggunakan kenyataan cuba-dengan-sumber secara aktif untuk menambah baik kod kita dan meningkatkan kebolehbacaan dan keteguhan kod.

Atas ialah kandungan terperinci Bagaimana untuk menutup sumber dengan anggun menggunakan cuba-dengan-sumber dalam Java 7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn