JavaRush /Blog Jawa /Random-JV /Java 7 nyoba-karo-sumber
DarthVictor
tingkat

Java 7 nyoba-karo-sumber

Diterbitake ing grup
Wiwit versi 7, Jawa nawakake manajemen sumber daya sing luwih apik sing kudu ditutup sawise rampung nggarap. Sumber daya kasebut kalebu, contone, file, stream, sambungan database lan soket. Tujuan iki dilayani dening basa khusus mbangun try-with-resources. Supaya penutupan otomatis iki bisa digunakake, antarmuka khusus wis digawe AutoCloseable. Jawa 7 coba-kanggo-sumber daya - 1Ing Java 7, kabeh kelas sumber ngleksanakake antarmuka iki. Tandhane katon kaya iki:
public interface AutoCloseable {
    void close() throws Exception;
}
Antarmuka nyatakake cara close()sing kanthi otomatis diarani obyek sing dilayani dening konstruk try-with-resources. Sanajan kelas sumber daya ing Jawa 7 ngleksanakake antarmuka iki, akeh perpustakaan sing sampeyan gunakake ora, amarga perpustakaan durung dianyari kanggo nggarap antarmuka AutoCloseable utawa sampeyan mung ora duwe kemampuan kanggo nganyari perpustakaan. Ing sawetara kasus iki bisa gampang ditanggulangi. Warisan kelas sumber daya sing kudu melu ing try-with-resources. Ayo dadi contone ITextRenderer(saka proyek Flying Saucer). Sawise rampung nggarap ITextRenderer, cara kasebut kudu diarani finishPDF(). Biasane sampeyan bakal nindakake iki ing blok finally. Nanging nalika sampeyan nggawe kelas anyar sing ngluwihi ITextRendererlan ngleksanakake antarmuka AutoCloseable, sampeyan bisa kalebu ing try-with-resources. Kelas anyar AutoCloseableITextRendererbakal katon kaya iki:
public class AutoCloseableITextRenderer extends ITextRenderer implements AutoCloseable {
    @Override
    public void close() {
        super.finishPDF();
    }
}
Ngluwihi kelas asli ing turunan minangka solusi sing paling wajar, amarga kelas anyar isih bakal dadi ITextRenderer. Yen kelas asli diumumake minangka final, komposisi kudu digunakake. Lan iki bakal katon kaya panggunaan:
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();
        }
Mekaten. Wigati dimangerteni manawa aku ora mbuwang pengecualian saka metode close()ing AutoCloseableITextRenderer. Javadoc saka antarmuka AutoCloseablengandika ing ngisor iki babagan iki: Senajan cara antarmuka diumumake kanggo uncalan pangecualian Exception, implementers saka cara iki dianjurake banget kanggo nggunakake kelas pangecualian sing luwih spesifik nalika ngleksanakake cara, utawa ora kanggo uncalan pangecualian ing kabeh yen cara close()ora bisa. gagal.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION