我之前学过C++,现在想用Java作为编程语言。我已经研究了关于Java的"析构函数"、finalize()方法和close()或shutdown()方法的很多资料,但是我还是不太明白应该如何使用(当然下面提供更多信息)。
具体问题是:为什么需要调用close()或shutdown()方法呢?我正在使用一个处理智能卡读卡器的类,但是我发现在文件管理中也需要调用close()方法,这两种情况是否相同?
难道调用close()方法的意思就是释放内存吗(就像C++一样)?换句话说,我必须负责删除或销毁对象......难道GC就不能做这个吗?
对于我正在尝试使用的智能卡读卡器类,可能实现finalize()方法是一个选项,这样在不再使用时,可以释放内存(最有可能是本地代码)和/或释放GC可能不知道如何处理的硬件资源。
那么对于文件管理类呢?那些非常常用和维护,为什么还需要close()方法呢?我理解存在的目的是为了解锁文件,但为什么我还要记得关掉它?一旦对象不再使用,自动释放文件,至少在最常见的情况下。
最后,将需要关闭或关闭的类包装在实现finalize()方法的类中并在那里调用close()或shutdown()方法是否是一个适当的解决方案?
我发现finalize()方法并不是很流行,所以我想问这个问题应该如何解决。
谢谢!
Juan
PS:我看到的: