我正在使用Scanner类,并不断遇到警告,说我应该关闭资源泄漏。它之前没有影响我,所以我忽略了它。这会在将来给我带来什么问题吗?如何关闭扫描仪?
答案 0 :(得分:0)
如果用于初始化扫描仪的基础对象没有泄漏,则扫描仪不会泄漏任何资源。您收到编译器警告,因为扫描程序实现Closable
并且接口指定在使用后必须关闭(缺少其他单词) resource 。通常,您需要使用try-with-resources语句在范围结束时自动关闭资源。
try (Scanner scanner = new Scanner("my input string")) {
while (scanner.hasNext()) {
process(scanner.next());
}
}
参考:https://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html
答案 1 :(得分:0)
您需要关闭扫描仪类:
Scanner in = new Scanner(System.in);
in.close(); //Here you're closing it
您可以尝试在try / catch块中使用扫描仪,以确保始终关闭扫描仪:
Scanner in = new Scanner(System.in);
try {
//Use your Scanner
} finally {
in.close();
}