Heim >Java >javaLernprogramm >Sollte ich einen mit System.in verknüpften Scanner schließen?

Sollte ich einen mit System.in verknüpften Scanner schließen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 18:27:20914Durchsuche

Should I Close a Scanner Linked to System.in?

Schließen eines mit System.in verknüpften Scanners

Das Schließen eines mit System.in verknüpften Scanners kann ein Dilemma sein. Während es beim Codieren gute Praxis ist, offene Ressourcen zu schließen, wird dadurch auch System.in selbst geschlossen, wenn ein Scanner mit System.in verbunden ist. Dies wirft die Frage auf: Gibt es eine Möglichkeit, den Scanner zu schließen, ohne System.in zu beeinträchtigen?

Lösung

Die einfachste Lösung besteht darin, den Scanner nicht zu schließen, wenn Sie dies tun beabsichtigen nicht, den zugrunde liegenden Stream zu schließen. In den meisten Fällen empfiehlt es sich, einen einzigen Scanner zu erstellen, der das gesamte Programm bedient. Dadurch entfällt die Notwendigkeit, ihn wiederholt zu erstellen und zu schließen.

Wenn Sie den Scanner aus irgendeinem Grund schließen müssen, besteht eine Möglichkeit darin, eine neue Scanner-Instanz mit demselben zugrunde liegenden Stream zu erstellen. Dadurch werden die beiden Entitäten getrennt und Sie können den Scanner schließen, ohne System.in zu beeinträchtigen.

Hier ein Beispiel:

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();

Diese Methode stellt sicher, dass System.in unberührt bleibt, ermöglicht Ihnen aber gleichzeitig dies Schließen Sie den ursprünglichen Scanner.

Es ist wichtig zu beachten, dass das Erstellen mehrerer Scanner-Instanzen Auswirkungen auf die Leistung haben kann. Wenn die Leistung ein Problem darstellt, ist es am besten, während der gesamten Lebensdauer des Programms einen einzelnen Scanner zu verwenden.

Das obige ist der detaillierte Inhalt vonSollte ich einen mit System.in verknüpften Scanner schließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn