java finalize 析构_close,析构函数和finalize:Java矛盾
try { FileInputStream in = new FileInputStream(filename);
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String line;
while((line=reader.readLine())!=null){
// read the file
}
}
catch (Exception e) {
System.out.println(e);
}
但是如果我嘗試將命令添加為close,那么在文件讀完之后,我就得到了錯誤:
in.close();
Error:(131, 9) java: cannot find symbol
symbol: variable in
location: class ReadFile
我在使用后搜索了清潔對象,并在程序結束前需要關閉文件.并在Java上發現了幾個帖子,但很多都非常矛盾.關鍵是,最后我感到非常困惑.
我錯了,或者Java編程有點模糊和混亂?我的意思是,顯然沒有真正使用destructor,使用finalize是非常值得懷疑的,并且close的使用也被認為是不必要的.關于這些問題的一些帖子是矛盾的和非決定性的.
那么,如何在這里繼續?在我真的需要關閉文件的情況下,如何擺脫這個錯誤信息?關閉文件真的可有可無和不必要嗎?如何為程序完成清理類實例?
解決方法:
您收到錯誤是因為您在try塊內部定義了變量,因此它在catch / finally /或try之外的任何地方都不可見.將聲明移到外面試試:
改變這個
try { FileInputStream in = new FileInputStream(filename);
至
FileInputStream in = null;
try { in = new FileInputStream(filename);
標簽:java,file-io,class,code-cleanup,finalize
來源: https://codeday.me/bug/20190716/1477358.html
總結
以上是生活随笔為你收集整理的java finalize 析构_close,析构函数和finalize:Java矛盾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hadoop伪分布式搭建 java_ha
- 下一篇: java四神兽_SpringCloud五