Опытного программистом новичок в Java ищет свою мудрость:Java метода с истекшим временем жизни объектов
Если нет никакого способа, чтобы гарантировать, что некоторые особенности фрагмента кода выполняются как объект выходит из области видимости, то, что существуют ли другие подходы, которые будут предлагать те же функциональные возможности? (кажется, окончательно явно не предназначены для этого)
Классическим примером является Scoped замок идиома:
void method()
{
// Thread-unsafe operations {...}
{ // <- New scope
// Give a mutex to the lock
ScopedLock lock(m_mutex);
// thread safe operations {...}
if (...) return; // Mutex is unlocked automatically on return
// thread safe operations {...}
} // <- End of scope, Mutex is unlocked automatically
// Thread-unsafe operations {...}
}
Я могу понять, что в Java было бы неодобрительно, что какой-то код выполняется, если вам явно не назвали его. Но я считаю, что возможность принудительного исполнения какого-либо кода, который будет выполняться в конце жизни объекта, является очень мощной функцией, обеспечивающей разумное использование ваших классов клиентским кодом. Спасибо
Согласитесь, это мощный. Я бы хотел, чтобы Java иногда использовала инструкцию 'C' 'using'. +1 Редактировать: У Guess Java есть это. см. ответ OldCurmudgeon. Если вы не используете Java 7, я бы пошел с попыткой/окончательным подходом к ошибкам. Хотя для блокировки нет автоматической обработки. –