W języku C++ mamy wzór (RAII), który znacznie upraszcza zarządzanie zasobami. Chodzi o to, aby zapewnić jakiś obiekt do owijania dla dowolnego rodzaju zasobów. Destruktor obiektu opakowującego jest następnie odpowiedzialny za zwalnianie zasobów, gdy wykracza poza jego zakres. Na przykład:Czy zarządzanie zasobami C++ jest możliwe w Javie
{
auto_ptr<int> smartPointer = new int;
// some other code
} // the memory allocated for the int is released automatically
// by smartPointer's destructor
Najczęstszym zastosowaniem są inteligentne wskaźniki. Ale istnieje wiele innych rodzajów zasobów (pliki, muteksy, gniazda itp.), Którymi można zarządzać w dokładnie taki sam sposób.
W Javie nie trzeba martwić się zarządzaniem pamięcią. Ale wszystkie inne rodzaje zasobów pozostają. Istnieje blok w końcu, ale jego użycie jest dość niewygodne, zwłaszcza gdy można wygenerować wiele różnych wyjątków.
Moje pytanie brzmi, czy istnieje wzór Java, który zapewnia funkcjonalność równoważną C++ RAII? Jeśli nie, podziel się swoimi najlepszymi praktykami w tej dziedzinie (zamiast w końcu, jeśli nie jest to używane w wyrafinowany sposób).
Zobacz to pytanie: http://stackoverflow.com/questions/194261/raii-in-java-is-resource-disposal-always-so-ugly-was-i-had-a-dream – Eclipse
Również: http : //stackoverflow.com/questions/477399/does-java-support-raii-deterministic-destruction – Eclipse
"co niezwykle upraszcza zarządzanie zasobami" - czy ty mnie żartujesz? – hasen