提问人:RickiE 提问时间:7/14/2020 最后编辑:RickiE 更新时间:7/15/2020 访问量:3380
Java Scanner “unassigned closeable value” 永远不会关闭 [Eclipse]
Java Scanner "unassigned closeable value" is never closed [Eclipse]
问:
每当我将扫描仪输入为“嵌套线”时,它都会警告我 [资源泄漏:'未分配的可关闭值'永远不会关闭],并建议我在它顶部添加。@SuppressWarnings("resource")
按照建议添加是正确的,还是有另一种更可取的方法?@SuppressWarnings("resource")
public static void main(String [] args){
String name = new Scanner(System.in).nextLine();
System.out.printf("My name is %s", name);
}
答:
1赞
Shailesh Jain
7/14/2020
#1
您可以使用 try-with-resource 构造,如下所示:
try(Scanner scanner = new Scanner(System.in)){
String name = scanner.nextLine();
System.out.printf("My name is %s", name);
}
扫描程序是一种资源,需要关闭它。通过在 finally block 中调用 close() 方法手动关闭它,或者如上所述使用 try-with-resource,以便它自动关闭资源。
评论
6赞
DodgyCodeException
7/15/2020
请注意:关闭扫描仪也会关闭 System.in,关闭后您将无法在应用程序中执行其他操作。new Scanner(System.in)
1赞
Andreas moved to Codidact
7/15/2020
#2
您的 IDE 可能会警告您不要调用 ,因为 实现了 。由于您不想关闭,因此禁止显示警告,然后忘记它。您可以检查 IDE 的设置,了解它应该发出的警告 ()。它只是没有检测到扫描仪正在使用 .close()
Scanner
Closable
System.in
resource
System.in
IntelliJ IDEA?您可能已启用以下一项或多项:
Preferences -> Editor -> Inspections -> Resource management -> ...
评论
scanner.close()