JavaRush /Java Blog /Random-TK /Java 7 synap görüň
DarthVictor
Dereje

Java 7 synap görüň

Toparda çap edildi
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 synanyşyk çeşmeleri - 1Java 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. ITextRendererTheö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 finalkompozisiý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” AutoCloseablebu 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.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION