1
当我写了这样的代码:为什么我在Class中声明时不会对Scanner'Resource Leak'发出警告?
void methodName(){
Scanner sc = new Scanner(System.in);
int inp = sc.nextInt();
System.out.println(inp);
}
我收到了“资源泄漏”的警告,这表明我应该关闭Scanner
实例。但是,当我定义sc
的方法外,像这样:
class MyClass{
Scanner sc;
void methodName(){
sc = new Scanner(System.in);
int inp = sc.nextInt();
System.out.println(inp);
}
}
我没有得到一个“资源泄漏”的警告,为什么?
另一个小问题,如果我做sc = null;
,我想Scanner
对象将有资格获得垃圾收集,因为它不再被引用,从而释放内存,对吧?那么sc = null;
就足以解决'资源泄漏'没有sc.close();
?