В моем случае, переменная-член является сокетом.Но этот вопрос может быть общим для любой переменной-члена, которая нуждается в некоторых операциях перед удалением объекта.
Я создал java-класс "DB", в котором есть член сокета.Я создаю член сокета в конструкторе.
Сокет будет оставаться открытым до тех пор, пока этот объект класса "DB" не станет GC.Так как мы должны закрыть сокет с помощью socket.close (), а Java не поддерживает деструктор.В этом случае мне интересно, где я должен положить "socket.close ()"?Переписать «finalize ()», как показано ниже?
Я слышал, что finalize () - устаревший метод.Тогда каково будет долгосрочное решение для такого рода проблемы, когда переменная-член требует некоторой операции перед удалением объекта?
Спасибо.
@Override
protected void finalize() throws IOException
{
m_socket.close();
}