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();
?