我是
Java新手,在高中时期有一些C语言背景.现在我正在努力创造一些东西,我选择Java作为编程语言.
我完成了我的作业,看了很多关于Java的“析构函数”,finalize()方法和close()或shutdown()方法.但我仍然认为我不知道这应该如何工作(当然下面有更多信息)
好的,具体的问题是为什么我需要调用close()或shutdown()方法?
在我的特定情况下,我正在使用一个我没有开发处理智能卡读卡器的类,但我已经看到文件管理的情况,你必须调用close()方法,将类似.
是不是调用close()方法与释放C中的内存相同(那很糟糕)?意思是,我必须处理对象的删除或破坏……不是GC的用途吗?
我试图用于智能卡读卡器的类不是最好的选项可能是一个选项,这个类实现finalize()方法可能更好,所以当不再使用并准备好GC时,释放内存(很可能是本机代码)和/或释放GC可能不知道如何操作的硬件资源.
但是文件管理类呢?那些是非常常用和维护的,为什么仍然需要close()方法?我理解存在的目的,解锁文件,但为什么我要记得关闭它?一旦不再使用该对象,则至少在最常见的情况下自动解锁文件.
最后,使用实现finalize()方法的类来包装需要关闭或关闭的类是否是一个正确的解决方法,我调用close()或shutdown()方法?
我已经看到finalize()方法不是很受欢迎,所以这就是我问这个问题应该如何解决的原因.
提前致谢
胡安
PS:我见过的: