Java 扫描仪 "unassigned closeable value" 永远不会关闭 [Eclipse]

Java Scanner "unassigned closeable value" is never closed [Eclipse]

每当我将扫描仪键入“嵌套行”时,它都会警告我[资源泄漏:'unassigned closeable value' 永远不会关闭],并建议我在其顶部添加 @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);
}

您可以使用 try-with-resource 结构,如下所示:

try(Scanner scanner = new Scanner(System.in)){
        String name = scanner.nextLine();
        System.out.printf("My name is %s", name);
    }

扫描仪是一种资源,需要关闭。要么通过在 finally 块中调用 close() 方法手动关闭它,要么像上面那样使用 try-with-resource 以便它自动关闭资源。

您的 IDE 可能会警告您不要调用 close(),因为 Scanner 实现了 Closable。因为您不想关闭 System.in,请取消警告,然后忘记它。您可以检查 IDE 的设置,了解它应该警告的内容 (resource)。它只是没有检测到扫描仪正在使用 System.in.

IntelliJ IDE一个?您可能启用了其中一项或多项:

Preferences -> Editor -> Inspections -> Resource management -> ...