Doświadczony programista nowy w Java poszukuje mądrości:techniki Java dla end-of-życia obiektów
Jeśli nie ma sposobu, aby upewnić się, że niektóre szczególności kod kawałek jest wykonywany jako przedmiot wykracza poza zakres, a następnie co czy istnieją inne podejścia, które oferowałyby taką samą funkcjonalność? (wydaje się sfinalizować wyraźnie nie oznaczało dla tego)
Klasycznym przykładem jest lunetą blokada idiom:
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 {...}
}
Mogę zrozumieć, że w Javie byłoby mile widziana mieć jakiś kod wykonywany jeśli ciebie nie nazwałem tego wyraźnie. Uważam jednak, że możliwość egzekwowania niektórych kodów, które mają zostać wykonane po zakończeniu okresu istnienia obiektu, jest bardzo ważną funkcją zapewniającą rozsądne korzystanie z klas przez kod klienta. Dzięki
Zgadzam się, jest potężny. Szkoda, że Java nie miała czasami czegoś takiego jak C# 'use'. +1 Edytuj: Zgadnij, że Java ma to. zobacz odpowiedź OldCurmudgeon. Jeśli nie korzystasz z Java 7, skorzystam z podejścia try/finally na temat błędów. Chociaż do blokowania nie ma automatycznego sterowania. –