Ahogy próbáltam megérteni a jelentését véglegesítése módszer
Nemrég hívták egy társaság egy interjú a helyzetét Java-programozó. Az interjú beszéltünk az eljárás véglegesítése. Volt csak felületesen értik a működését ez a módszer nem volt képes, hogy egy tisztességes leírást az intervyuveram. Ezért az interjú után, meg kellett dolgozni a hibákat, hogy megértsék.
Tudásom korlátozódik, ami véglegesíti a módszert nevezik, amikor a szemétgyűjtő kezdődik, hogy dobja a tárgyat. És én nem egészen értem, hogy mi az. Azt hittem, hogy olyasmi, mint egy destruktor, amely mentesíti egyes források, amikor már nincs szükség, és még források tárolt más helyeken, ez nem igaz.
Tehát az első dolog megértéséhez szükséges - a találkozó.
Azt tervezték, ez a módszer az automatikus kioldó rendszer erőforrásokat által elfoglalt a tárgy, amelyen ezt a módszert hivatkozni. Úgy tűnik, kényelmes, akkor nem kell emlékezni minden alkalommal, például, hogy be kell zárni a kapcsolatot valamilyen erőforrás, ha már nincs szükség.
Valószínű, hogy ez a módszer nem nevezhető egyáltalán. Ez akkor fordulhat elő, ha a tárgy vált elérhetővé a szemétgyűjtő, valamint a program befejeződik.
Egy érdekes tulajdonsága ez a módszer, hogy újra tudja, hogy egy tárgy áll, ezt hozzárendelése bármely változó, bár nem ajánlott megtenni, mert visszaállításáról egy tárgy, nem újra finalize fogják hívni
Előfordulhat egy másik ritka pillanat. Van egy osztály, amely végrehajtja a lezárási módszer. Készítünk egy B osztályú kiterjeszti A, amely felejtsd lezárási. B. osztályú létesítmények tartalmaz egy csomó adat. Ha egy objektum a B osztály már nincs szükség, akkor a helyére kerül, és hogy befejezzék bizonyos ideig továbbra is elfoglalni memória, ahelyett, hogy mi lenne megkerülni a sorba, és azonnal megsemmisíteni.
További hátrány, hogy meg kell emlékezni arról a hívást, a lezárási módszer, a szuper-osztály, ha újra azt. A fejlesztő nem okoz - senki oka.
Kivételek dobott a módszerrel véglegesíti, az áramlás-nem feldolgozott véglegesítő, azaz stektreys ez valószínűleg nem fog követni.
Van egy módja, hogy biztosan finalize-módszert írtak ki a tárgyakat, hogy rendelkezésre állnak az összeszereléshez: ok System.runFinalization () vagy Runtime.getRuntime () runFinalization () .. A kimenet a módszer végzik csak ha az összes rendelkezésre álló objektum módszereket kell elvégezni, hogy véglegesítse a
A magam részéről arra a következtetésre jutott, hogy ez a módszer használatát feleslegesen nem szükséges, és az esetek különleges igény az én két és fél éves gyakorlat még nem találkozott.
Jobb helyett véglegesítése írásban technikákat, mint például közel a java.io és hívja őket a véglegesen blokkolni. Hátránya, hogy razrabotkik kell emlékezni, hogy használata után az erőforrás le kell zárni. Hogy segítsen nekünk ide Java SE 7 azok try-with-források
De ez a módszer enni valamit. Hol és hogyan lehet használni? Vannak példák használat?
Lezárás lehet használni, mint egy utolsó esélyt, hogy lezárja a forrás, de soha nem az első, vagy csak kísérlet. Ie mellett, hogy az ügyfél hívhatják például közel egy módszert az objektum, amely az erőforrás. És talán elfelejteni. Akkor próbáljuk meg segíteni neki. Ez úgy történik, például az osztályban FileInputStream.java:
Ezt a megközelítést gyakran használják a Java könyvtárak.