System.in にリンクされたスキャナーを閉じる
System.in にリンクされたスキャナーを閉じるのは難しい場合があります。開いているリソースを閉じることはコーディングの良い習慣ですが、System.in に接続されたスキャナーでこれを行うと、System.in 自体も閉じられます。ここで疑問が生じます: System.in に影響を与えずにスキャナーを閉じる方法はありますか?
解決策
最も簡単な解決策は、次の場合はスキャナーを閉じないことです。基礎となるストリームを閉じるつもりはありません。ほとんどの場合、プログラム全体に対応する単一のスキャナーを作成することをお勧めします。これにより、スキャナを繰り返し作成して閉じる必要がなくなります。
何らかの理由でスキャナを閉じる必要がある場合、オプションの 1 つは、同じ基礎となるストリームで新しいスキャナ インスタンスを作成することです。これにより、2 つのエンティティが分離され、System.in に影響を与えることなくスキャナを閉じることができます。
例を次に示します:
Scanner scanner = new Scanner(System.in); // Use the scanner as needed... // Create a new scanner with the same underlying stream. Scanner newScanner = new Scanner(System.in); // Close the first scanner. scanner.close(); // Continue using the new scanner. newScanner.nextInt(); // Close the second scanner. newScanner.close();
このメソッドにより、System.in は影響を受けずに済みますが、次のことが可能になります。元の Scanner を閉じます。
複数の Scanner インスタンスを作成すると、パフォーマンスに影響を及ぼす可能性があることに注意することが重要です。パフォーマンスが懸念される場合は、プログラムの存続期間全体を通じて 1 つのスキャナーを使用するのが最善です。
以上がSystem.in にリンクされているスキャナーを閉じるべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。