Pernyataan cuba-dengan-sumber dalam Java: penyelesaian muktamad kepada kebocoran sumber
Dalam pengaturcaraan Java, kebocoran sumber adalah masalah biasa dan menyusahkan. Memandangkan mekanisme pengumpulan sampah Java hanya bertanggungjawab untuk mengitar semula objek sampah, kami perlu mengeluarkan sumber bukan memori secara manual (seperti fail, sambungan pangkalan data, sambungan rangkaian, dll.). Jika sumber ini tidak dikeluarkan dengan betul dalam program, ia akan membawa kepada masalah kebocoran sumber, yang boleh menyebabkan sistem ranap dalam kes yang teruk.
Untuk menyelesaikan masalah ini, Java memperkenalkan pernyataan cuba-dengan-sumber dalam JDK7, yang dianggap sebagai penyelesaian muktamad kepada kebocoran sumber.
Pernyataan cuba-dengan-sumber yang dipanggil merujuk kepada sumber yang perlu dikeluarkan secara manual apabila digunakan di dalam blok pernyataan cubaan Sumber ini mesti melaksanakan antara muka java.lang.AutoCloseable atau sub-antara mukanya Boleh Ditutup. Dalam pernyataan cuba-dengan-sumber, kita tidak perlu lagi mengeluarkan sumber secara eksplisit, tetapi mesin maya Java secara automatik melengkapkannya untuk kita.
Berikut ialah contoh mudah untuk menggambarkan penggunaan pernyataan cuba-dengan-sumber:
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(); }
Dalam contoh ini, kami mencipta objek BufferedReader br untuk membaca kandungan fail "example.txt". Memandangkan BufferedReader melaksanakan antara muka Boleh Ditutup, kami boleh menggunakannya dalam kenyataan cuba-dengan-sumber. Pada penghujung blok kod cuba, mesin maya Java secara automatik memanggil kaedah close() br untuk melepaskan sumber, dan kami tidak perlu memanggilnya secara eksplisit.
Salah satu kelebihan hebat pernyataan cuba-dengan-sumber ialah ia boleh mengendalikan pengeluaran berbilang sumber pada masa yang sama. Hanya letakkan penyataan penciptaan sumber ini dalam kurungan cuba dan pisahkan dengan koma bertitik. Contohnya:
try (BufferedReader br = new BufferedReader(new FileReader("example.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) { String line; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } } catch (IOException e) { e.printStackTrace(); }
Dalam contoh di atas, kami menggunakan BufferedWriter untuk menulis pada fail "output.txt". Begitu juga, apabila blok kod cuba tamat, mesin maya Java secara automatik memanggil kaedah close() br dan bw untuk melepaskan sumber.
Dalam pernyataan cuba-dengan-sumber, anda juga boleh menggunakan sintaks khas yang dipanggil ";" Ungkapan ini boleh digunakan untuk menyemak pengecualian pada akhir blok percubaan dan mengembalikan nilai. Contohnya:
try (MyResource resource = new MyResource()) { // 使用资源 } catch (Exception e) { // 处理异常 } finally { // 运行在资源释放之后,可选 }
Dalam contoh ini, kita boleh melakukan beberapa kerja pembersihan dalam blok kod akhirnya, seperti menutup sambungan pangkalan data, dsb.
Ringkasnya, pernyataan cuba-dengan-sumber ialah penyelesaian muktamad kepada masalah kebocoran sumber di Jawa. Ia boleh mengeluarkan sumber secara automatik, memudahkan penulisan kod dan meningkatkan kebolehbacaan kod. Pada masa yang sama, ia juga menyokong pengendalian pelepasan berbilang sumber pada masa yang sama, serta menyemak pengecualian dan mengembalikan nilai pada penghujung blok kod. Apabila menulis program Java, kita harus menggunakan sepenuhnya pernyataan cuba-dengan-sumber untuk mengelakkan masalah kebocoran sumber.
Atas ialah kandungan terperinci Pernyataan Cuba-dengan-sumber dalam Java: Penyelesaian terbaik untuk mengelakkan kebocoran sumber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!