当 Scanner 是静态 class 变量时,Eclipse 没有显示资源泄漏 - 为什么?

Eclipse shows no resource leak when a Scanner is a static class variable - Why?

假设我将扫描仪用作静态 class 级变量:

public class Demo {

    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args){
        int a = scanner.nextInt();
    }
}

我知道关闭扫描仪 class 是一种很好的做法,无论何时打开扫描仪 - 或使用 try-with-resources -,但显然我的 Eclipse 没有指示应该关闭这个扫描仪,如果它是静态字段。如果我将它作为局部变量放入一个方法中,那么 Eclipse 会自动给我一个警告,提示我应该关闭我的 Scanner 以避免资源泄漏。

我知道在加载 class 时,GC 不会删除任何字段,但无论如何也无法删除 Scanner,对吗?

所以我的问题是:如果 Eclipse 是 class 变量,Eclipse 是否有特定原因表明我可以关闭扫描仪,或者它只是 IDE 的错误?你怎么看?

我可以想象它就像显式类型转换,开发人员知道他在做什么并且幕后验证无法检查您是否需要该扫描器未关闭或未在您取消引用的特定时间点关闭,因为该字段是静态的。

但是,验证可以用来验证您在当前范围内声明的(以及需要关闭的)所有资源是否确实已关闭。此外,try-with-resources 构造仅适用于 JLS 中提到的局部变量,Section 14.20.3.