7-nji wersiýasyndan başlap, Java olar bilen işleşip gutarandan soň ýapylmaly çeşmeleri gowulandyrmagy teklip edýär. Şeýle çeşmelere, mysal üçin faýllar, akymlar, maglumat bazasynyň birikmeleri we rozetkalar girýär. Bu maksat, synag çeşmeleri bilen ýörite dil gurluşy bilen üpjün edilýär. Bu awtomatiki ýapylmagynyň işlemegi üçin ýörite interfeýs döredildi
AutoCloseable
. Java 7-de ähli çeşme synplary bu interfeýsi durmuşa geçirýärler. Onuň goly şeýle:
public interface AutoCloseable {
void close() throws Exception;
}
Interfeýs close()
konstruksiýanyň hyzmat edýän obýektlerine awtomatiki usulda çagyrylýan usuly yglan edýär try-with-resources
. Java 7-de çeşme synplary bu interfeýsi durmuşa geçirýän hem bolsa, ulanýan kitaphanalaryňyzyň köpüsi, “AutoCloseable” interfeýsi bilen işlemek üçin kitaphananyň entek täzelenmändigi ýa-da kitaphanany täzelemäge mümkinçiligiňiz ýoklygy sebäpli ulanmaýar. Köp halatlarda muny aňsatlyk bilen çözüp bolýar. Gatnaşmaly çeşme synpyny miras alyň try-with-resources
. Mysal üçin alalyň ITextRenderer
(Uçýan Sauser taslamasyndan). Işläp gutarandan soň ITextRenderer
, usul diýilmeli finishPDF()
. Adatça muny bir blokda ýerine ýetirerdiňiz finally
. ITextRenderer
Theöne interfeýsi giňeldýän we durmuşa geçirýän täze synp döredeniňizde AutoCloseable
, ony içine goşup bilersiňiz try-with-resources
. Täze synp AutoCloseableITextRenderer
şeýle bolar:
public class AutoCloseableITextRenderer extends ITextRenderer implements AutoCloseable {
@Override
public void close() {
super.finishPDF();
}
}
Asyl synpy nesilde giňeltmek iň amatly çözgüt, sebäbi täze synp henizem bolar ITextRenderer
. Asyl synp diýlip yglan edilen halatynda final
kompozisiýa ulanylmaly. Ulanylyşynyň görnüşi:
try (final AutoCloseableITextRenderer iTextRenderer = new AutoCloseableITextRenderer()) {
ByteArrayOutputStream out; // contains the data to be converted to PDF, not shown here.
iTextRenderer.setDocumentFromString(new String(out.toByteArray()));
iTextRenderer.layout();
iTextRenderer.createPDF(pdfOutputStream);
pdfOutputStream.flush();
}
Bu hemmesi. close()
Bir usuldan kadadan çykmaýandygymy ýadyňyzdan çykarmaň AutoCloseableITextRenderer
. Interfeýsiň “Javadoc” AutoCloseable
bu barada aşakdakylary aýdýar: Interfeýs usuly kadadan çykmalar yglan edilse-de Exception
, bu usuly ýerine ýetirijiler usuly durmuşa geçirenlerinde has anyk kadadan çykma sapaklaryny ulanmagy ýa-da usul close()
mümkin bolmadyk halatynda kadadan çykmalary taşlamagy maslahat berýärler. şowsuz.
GO TO FULL VERSION