在我的情况下,成员变量是套接字。但是这个问题对于任何需要在删除对象之前需要进行一些操作的成员变量来说都是普遍的。
我创建了一个具有套接字成员的Java类“ DB”。我在构造函数中创建套接字成员。
套接字将保持打开状态,直到此类“ DB”对象成为GC。由于我们应该使用“ socket.close()”关闭套接字,因此Java不支持析构函数。
在这种情况下,我想知道应该在哪里放置“ socket.close()”?覆盖“ finalize()”,如下所示?
我听说finalize()是不推荐使用的方法。 那么,对于这种问题,成员变量在删除对象之前需要进行一些操作的长期解决方案是什么?
谢谢。
@Override
protected void finalize() throws IOException
{
m_socket.close();
}