a project coin egyik eleme az ARM, azaz automatikus erőforrás kezelés. ez sokkal egyszerűbb dolog annál, mint amit a neve sugall. tömören arról van szó, hogy bizonyos objektumokra ezután nem kell kézzel meghívnunk a close() metódust. erre egy új nyelvi konstrukciót vezetnek be és az API is megújul kicsit.
vannak olyan erőforrások, amiket használat után mindenképp fel kell szabadítanunk, le kell zárnunk. ilyenek a különböző fájlleírók, socketek stb. ezt eddig körülményesen, egy finally blokkban tehettük meg. ezen segít az új szintaxis, ami így néz ki:
try (resource) {
// resource itt használható
} catch (Exception ex) {
}
resource az automatikusan lezárandó erőforrás. ilyenből több is lehet, pontosvesszővel elválasztva sorolhatjuk föl őket. a zárójelek között álló összes erőforrás típusának implementálnia kell az AutoCloseable interfészt. ennek egy close() metódusa van throws Exception kitétellel.
az erőforrások lehetnek korábban létrehozott objektumok, de deklarálhatjuk őket a try zárójelei között is. egy itt deklarált változó hatásköre a deklarációtól kezdődik, tehát egy későbbi erőforrásnál már felhasználhatjuk. például
try (DimmyDummy d = new DimmyDummy(); d.getDummy())
ha a getDummy() metódus egy AutoCloseable példányt ad vissza, akkor ezzel a kóddal minden rendben.
a működés nagyon egyszerű.: a blokk végén meghívódik a close() metódus. ha valamelyik erőforrás létrehozásakor kivétel dobódik, vagy a bezáráskor van probléma, akkor az egész blokk kivétellel fejeződik be. ezeket a catch ágakban el tudjuk kapni.
az egész fenti kód igazából így íródik át:
try {
try (resource) {
// resource itt használható
}
} catch (Exception ex) { }
a kivételek működését így a legegyszerűbb megérteni.
ha tesztelnétek ezt a funkciót, a szükséges binárisokat innen tölthetitek le, a részletes speckót (amit mindenképp érdemes elolvasni) itt találjátok.
Kategóriák
java , java7Címkék
java , java7 , jdk7 , programnyelviFőoldalra ajánlom!
Eddig 3 komment érkezett
(
)
-
1. hron84
2010. 08. 25. 16:48 -
2. akos.tajti
2010. 08. 25. 16:50ha a tryban deklarálod, akkor csak a blokkban tudod használni. ugyanúgy, ahogy a for ciklusnál pl.
-
3. str
2010. 12. 21. 2:08Olé, feltaláltuk a usingot
Mondj valamit
A szövegben nem lehet HTML-t használni, a linkeket pedig automatikusan aláhúzzuk. Az email cím megadása kötelezõ, de az oldalon nem jelenik meg. Ha van freeblogos felhasználóneved, itt bejelentkezhetsz.
Az IP címedet megjegyezzük, de ezt csak a komment spam jellegének vizsgálatához használjuk fel.


Az oke, hogy a try-jal kezdodik, de metodus-lokalis lesz az eroforras, vagy blokk-lokalis?