Scannerクラスã¯AutoCloseableインターフェースを実装ã—ã¦ã„ã‚‹ãŸã‚ã€try-with-resources文を使用ã—ã¦ç°¡å˜ã«ã‚¯ãƒãƒ¼ã‚ºã§ãã¾ã™ã€‚以下ã¯ãã®ä¾‹ã§ã™ã€‚
import java.util.Scanner;
public class AutoCloseableExample {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
System.out.print("整数を入力ã—ã¦ãã ã•ã„: ");
int userInput = scanner.nextInt();
System.out.println("入力ã•ã‚ŒãŸæ•´æ•°: " + userInput);
} // try-with-resourcesブãƒãƒƒã‚¯ã®çµ‚ã‚りã§è‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れる
// ã“ã“ã§scannerã¯ã™ã§ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¦ã„ã¾ã™
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€Scannerã‚’tryブãƒãƒƒã‚¯å†…ã§å®£è¨€ãŠã‚ˆã³åˆæœŸåŒ–ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ•´æ•°ã‚’入力ã•ã›ã¦ã„ã¾ã™ã€‚tryブãƒãƒƒã‚¯ã‚’抜ã‘ã‚‹ã¨ãã«Scannerã¯è‡ªå‹•çš„ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚ã“ã®ç‰¹æ€§ã¯ã€ScannerãŒAutoCloseableを実装ã—ã¦ã„ã‚‹ãŸã‚ã§ã™ã€‚
クãƒãƒ¼ã‚ºå‡¦ç†ãŒå¿…è¦ãªå ´åˆã€Scannerã¯è‡ªå‹•çš„ã«é©åˆ‡ã«ã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚例ãˆã°ã€ãƒ•ァイルやãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ã«try-with-resourcesを使用ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒãƒ¼ã‚ºå‡¦ç†ã‚’ç°¡å˜ã‹ã¤ç¢ºå®Ÿã«è¡Œãˆã¾ã™ã€‚
AutoCloseableインターフェース
AutoCloseable インターフェースã¯ã€Java 7ã‹ã‚‰å°Žå…¥ã•れãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã§ã€ä¸»ã«ãƒªã‚½ãƒ¼ã‚¹ã®è‡ªå‹•クãƒãƒ¼ã‚ºï¼ˆè‡ªå‹•çš„ãªè§£æ”¾ã‚„クリーンアップ)をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¯ã€try-with-resourcesæ–‡ã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ç”¨ã•れã€ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã‚’容易ã«ã—ã¾ã™ã€‚
AutoCloseable インターフェースã¯ã€ä»¥ä¸‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã£ã¦ã„ã¾ã™:
public interface AutoCloseable {
void close() throws Exception;
}
ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã¯ã€close メソッドをæä¾›ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚close メソッド内ã«ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã‚’解放ã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™ã€‚通常ã€ãƒ•ァイルã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æŽ¥ç¶šãªã©ã€å¤–部リソースを扱ã†ã‚¯ãƒ©ã‚¹ãŒ AutoCloseable インターフェースを実装ã—ã¾ã™ã€‚
以下ã¯ã€ç°¡å˜ãªä¾‹ã§ã™ã€‚ã“ã®ä¾‹ã§ã¯ã€MyResource クラス㌠AutoCloseable インターフェースを実装ã—ã¦ã„ã¾ã™ã€‚
public class MyResource implements AutoCloseable {
public void doSomething() {
System.out.println("リソースã§ä½•ã‹ã‚’行ã„ã¾ã™ã€‚");
}
@Override
public void close() throws Exception {
System.out.println("リソースãŒã‚¯ãƒãƒ¼ã‚ºã•れã¾ã—ãŸã€‚");
}
}
ã“ã® MyResource クラスを try-with-resources æ–‡ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ãƒªã‚½ãƒ¼ã‚¹ã®ç¢ºå®Ÿãªã‚¯ãƒãƒ¼ã‚ºãŒä¿è¨¼ã•れã¾ã™ã€‚
public class Main {
public static void main(String[] args) {
try (MyResource resource = new MyResource()) {
resource.doSomething();
} catch (Exception e) {
e.printStackTrace();
}
}
}
try-with-resources 文を使用ã™ã‚‹ã¨ã€try ブãƒãƒƒã‚¯ã‚’抜ã‘る際㫠MyResource クラス㮠close メソッドãŒè‡ªå‹•çš„ã«å‘¼ã³å‡ºã•れã€ãƒªã‚½ãƒ¼ã‚¹ãŒã‚¯ãƒãƒ¼ã‚ºã•れã¾ã™ã€‚
AutoCloseable インターフェースã¯ã€Javaã§ãƒªã‚½ãƒ¼ã‚¹ã®è‡ªå‹•クãƒãƒ¼ã‚ºã‚’実ç¾ã™ã‚‹ãŸã‚ã®åŸºæœ¬çš„ãªä»•組ã¿ã§ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェース㨠try-with-resources 文を組ã¿åˆã‚ã›ã‚‹ã“ã¨ã§ã€ãƒªã‚½ãƒ¼ã‚¹ã®ç¢ºå®Ÿãªè§£æ”¾ãŒç°¡æ½”ã‹ã¤åŠ¹æžœçš„ã«è¡Œãˆã¾ã™ã€‚リソースã®ç®¡ç†ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿¡é ¼æ€§ã‚„効率ã«å¤§ããªå½±éŸ¿ã‚’与ãˆã‚‹é‡è¦ãªå´é¢ã§ã‚りã€AutoCloseable インターフェースã¯ãã®é¢ã§é–‹ç™ºè€…ã«å¼·åŠ›ãªæ”¯æ´ã‚’æä¾›ã—ã¾ã™ã€‚
プãƒã‚°ãƒ©ãƒ ãŒé•·æœŸé–“実行ã•ã‚Œã‚‹å ´åˆã‚„ã€å¤§è¦æ¨¡ãªãƒ‡ãƒ¼ã‚¿å‡¦ç†ã‚’行ã†å ´åˆãªã©ã€ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ãŒç‰¹ã«é‡è¦ã§ã™ã€‚æ£ã—ã管ç†ã•れãªã„ã¨ã€ãƒªã‚½ãƒ¼ã‚¹ãƒªãƒ¼ã‚¯ã‚„アプリケーションã®ãƒ‘フォーマンスã®ä½Žä¸‹ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚AutoCloseable インターフェースã¯ã€ã“れらã®å•題を回é¿ã—ã€ä¿å®ˆæ€§ã®é«˜ã„ã‚³ãƒ¼ãƒ‰ã‚’æ›¸ãæ‰‹åŠ©ã‘ã¨ãªã‚Šã¾ã™ã€‚
ã—ãŸãŒã£ã¦ã€ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã«ãŠã„㦠AutoCloseable インターフェースã®ç†è§£ã¨æ´»ç”¨ã¯ã€Javaプãƒã‚°ãƒ©ãƒžãƒ¼ã«ã¨ã£ã¦é‡è¦ãªã‚¹ã‚ルã¨ãªã‚Šã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント