Jaki jest najlepszy sposób naśladowania zasobów próbnych w Javie 6?
Okazuje się, że prawie nikt nie zamyka poprawnie zasobów Java. Programiści albo nie używajątry-finally
w ogóle blokować lub po prostu wstawićresource.close()
wfinally
co również jest nieprawidłowe (ponieważThrowable
zclose()
może cieńThrowable
z bloku try). Czasami wkładają coś takiegoIOUtils.closeQuietly()
z jest tylko poprawneInputStream
, ale nie dlaOutputStream
. try-with-resources
rozwiązuje wszystkie te problemy, ale nadal istnieje ogromna liczba projektów napisanych w Javie 6.
Jaki jest najlepszy sposób naśladowaniatry-with-resources
w Javie 6? Teraz używamBliżej Guawy, która jest lepsza niż nic, ale wciąż znacznie brzydsza niżtry-with-resources
. Istnieje również wzorzec zwany wzorcem pożyczki, ale brak lambd w Javie czyni ten wzór bardzo uciążliwym. Czy jest lepszy sposób?