try-with-resources
- Java kursu
- Başlangıç
- Ders 98/116
- 5 dk
try-with-resources ile kaynak yönetimini öğrenirsin.
try-with-resources kaynağı otomatik kapatır
try-with-resources kaynağı parantez içinde tanımlar; blok bitince close() otomatik çağrılır. Böylece kapatmayı unutma riski ortadan kalkar.
try (Scanner input = new Scanner(System.in)) {
String name = input.nextLine();
System.out.println(name);
}Parantez içindeki değişken AutoCloseable olmalıdır; Scanner ve BufferedReader buna uyar. İster istisna çıksın ister çıkmasın, kapanma garantilenir. Bu yapı Java 7'den beri kaynak yönetiminin önerilen yoludur.
AutoCloseable arayüzü
Bir kaynağın try-with-resources içine alınabilmesi için AutoCloseable arayüzünü gerçeklemesi gerekir. Bu arayüz tek bir close() yöntemi içerir.
try (BufferedReader r = new BufferedReader(
new InputStreamReader(System.in))) {
System.out.println(r.readLine());
}İç içe sarmalanmış kaynakları tek parantez içinde virgülle de yazabilirsin; en içteki kapatılırken sıra dıştan içe takip edilir. Java derleyicisi kapatma sırasını senin yerine yönetir.
Uygulama try-with-resources ile oku
Scanner'ı try-with-resources içinde oluştur, bir satır oku ve yazdır. Kullanıcı Merhaba yazacak. Kaynağın otomatik kapanmasına güven.
Başlangıç kodu
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// try-with-resources ile Scanner oluştur, satır oku, yazdır
}
}Örnek çözüm
try (Scanner input = new Scanner(System.in)) {
String line = input.nextLine();
System.out.println(line);
}Beklenen çıktı
Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kaynağı try içinde tanımla
try (____ input = new Scanner(System.in)) {
String name = input.nextLine();
}
try (Scanner input = new Scanner(System.in)) {
String name = input.nextLine();
}
Açıklama: kaynak türü Scanner'dır ve parantez içinde tanımlanır.
2 Cümleyi tamamla
| Kavram | Anlamı |
|---|---|
try-with-resources |
close otomatik |
AutoCloseable |
kapatılabilir arayüz |
Scanner |
okuyucu |
BufferedReader |
arabellekli okuyucu |
3 try-with-resources bloğu bittiğinde ne olur?
- Kaynak açık kalır
- Program durur
- close() otomatik çağrılır Doğru cevap
- Hiçbir şey
Açıklama: try-with-resources bloğu bitince kaynağın close() yöntemi otomatik çağrılır.